我的SQL實例如下...如何使用CASE語句GROUP BY?
DECLARE @a TABLE(
id INT,
val BIT
);
INSERT INTO @a(id,val) VALUES (1,0),(2,0),(3,1),(4,0),(5,1);
SELECT
id = CASE
WHEN val = 1 THEN id
ELSE MAX(id)
END
FROM @a
WHERE val = 0
GROUP BY id, val;
什麼我的結果是:
id
---
1
2
4
我想獲得...
id
---
4
或者,如果我做「哪裏val = 1」那麼我想要的是...
id
---
3
5
我基本上想說的是「如果我選擇val = 1的位置,我想要所有的行,但是如果我選擇val = 0的位置,我只想要具有最高ID的行。有任何想法嗎?
不知道你在這裏試圖做什麼。 val = 0時爲什麼只有一行,但當val = 1時都需要兩個?這根本沒有意義。 –
我基本上想說的是「如果val = 1,我想要所有的行,但是如果val = 0,我只想要具有最高id的行」。我會把它放在我的問題中,謝謝。 – felloffthestack
我認爲你已經簡化了你的例子,它不再代表問題了。 –