我的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
我认为你已经简化了你的例子,它不再代表问题了。 –