---
title: "variabler i subquery case"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/136353-variabler-i-subquery-case"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Dino"
published: "2005-10-25T10:35:20.000Z"
updated: "2005-10-25T11:28:42.000Z"
replies: 2
views: 283
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/136353-variabler-i-subquery-case"
---

# variabler i subquery case

## #1 — Dino, 2005-10-25T10:35Z

Vet inte vad jag skulle skriva som rubrik, vill i alla fall att nedan kod skall fungera. Så finns det något alternativ till att få det att funka?

```
DECLARE @type char(4)
DECLARE @tableid int

SELECT 
   AAA, 
   BBB, 
   ISNULL
   (
       (
        SELECT TOP (1) @type = Table2.Type, @tableid = Table2.TableId
        FROM Table2
        WHERE (Table2.Table1Id = Table1.Id ) AND (GETDATE() BETWEEN Table2.StartDate AND Table2.EndDate)
        ORDER BY Table2.TableId DESC, Table2.Type DESC
        )
		 
        CASE @type 
         WHEN 'aqaq' THEN 
         (
            SELECT Table3.CCC
            FROM Table3
            WHERE (Table3.Id = @tableid)
         ) 
         WHEN 'swsw' THEN 
         (
            SELECT Table4.CCC
            FROM Table4
            WHERE (Table4.Id = @tableid)
         ) 
         END
   , CCC) as CCC
FROM Table1
```

Permalänk: https://www.webforum.nu/p/136353

## #2 — LarsG, 2005-10-25T11:07Z

```
@type = Table1.Type
```

table2 istf table1?

Varför top 1 utan order by? 

```
SELECT 
   AAA, 
   BBB, 
   case (SELECT max(type)
           FROM Table2
        WHERE Id = Table1.Id)
      WHEN 'aqaq' THEN 
         (SELECT max(CCC)
            FROM Table3
            WHERE Id = table1.id)
      WHEN 'swsw' THEN 
         (SELECT max(CCC)
            FROM Table4
            WHERE Id = table1.id)
      else ccc END as CCC
FROM Table1
```

Rent allmänt så får jag intryck av en suspekt datamodell.

Permalänk: https://www.webforum.nu/p/1694730

## #3 — Dino, 2005-10-25T11:28Z

1\. Det är jag som skrivit fel i inlägget, skall vara Table2. Redigerat.

2\. Orkade inte skriva in all kod \*lat\*. Redigerat.

Beskrivning.
CREATE TABLE Table2
(
   Id int,
   Table1Id int,
   Type char(4),
   TableId int
   StartDate
   EndDate
)

Tanken är då att för varje rad i Table1 gå in i Table2 och se ur vilken annan tabell som den skall hämta värdet CCC beroende på Table1Id och där StartDate och EndDate är mellan GetDate(). Table2.Type är då vilken tabell och Table2.TableId är vilken rad i tabellen värdet ligger.

**Se första inlägget för redigeringar i koden.**

Permalänk: https://www.webforum.nu/p/1694736

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/136353-variabler-i-subquery-case
