Мой SQL пример выглядит следующим образом ...Как GROUP BY с оператором CASE?
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
Или если бы я сделал «WHERE val = 1», тогда я хочу ...
id
---
3
5
То, что я в основном пытаюсь сказать, это «если я выбираю, где val = 1, я хочу все строки, но если я выберу, где val = 0, мне нужна только строка с самым высоким id». Есть идеи?
Не уверен, что вы здесь делаете. Почему существует только 1 строка, когда val = 0, но вы хотите, чтобы оба, когда val = 1 ??? Это не имеет никакого смысла. –
То, что я в основном пытаюсь сказать, это «если val = 1, я хочу все строки, но если val = 0, мне нужна только строка с самым высоким id». Я расскажу об этом в своем вопросе, спасибо. – felloffthestack
Я думаю, что вы упростили свой пример так, чтобы он больше не представлял проблему. –