2016-02-24 4 views
0

У меня есть 2 столбца, идентификатор и дата. Если дата находится в 2/3/16, 2/4/16, 2/5/16, я хочу вернуть все значения. Трудно объяснить, вот пример. Следующее должно возвращать все 3 строки для id 1 и ни одного из 2. Любая помощь будет оценена. Благодаря!Верните все строки при удалении одного значения

id  date 
1  2/1/16 
1  2/2/16 
1  2/3/16 
2  2/11/16 
2  2/12/16 

ответ

1

Попробуйте это:

SELECT id, [date] 
FROM mytable 
WHERE id IN (SELECT Id 
      FROM mytable 
      WHERE [date] IN ('2016-03-02', '2016-04-02', '2016-05-02')) 
+0

Отлично, спасибо! – jerry

0

Это синтаксис Oracle; попробуйте переписать его для SQL Server:

WITH T AS (
SELECT 1 AS ID, TO_DATE('2/1/16', 'DD/MM/YY') AS MY_DATE FROM DUAL UNION ALL 
SELECT 1 AS ID, TO_DATE('2/2/16', 'DD/MM/YY') AS MY_DATE FROM DUAL UNION ALL 
SELECT 1 AS ID, TO_DATE('2/3/16', 'DD/MM/YY') AS MY_DATE FROM DUAL UNION ALL 
SELECT 2 AS ID, TO_DATE('2/11/16', 'DD/MM/YY') AS MY_DATE FROM DUAL UNION ALL 
SELECT 2 AS ID, TO_DATE('2/12/16', 'DD/MM/YY') AS MY_DATE FROM DUAL 
) 
SELECT * 
FROM T T1 WHERE EXISTS(
SELECT * FROM T T2 
WHERE 
T1.ID = T2.ID 
AND T2.MY_DATE IN (TO_DATE('2/3/16', 'DD/MM/YY'), TO_DATE('2/4/16', 'DD/MM/YY'), TO_DATE('2/5/16', 'DD/MM/YY')) 
); 
Смежные вопросы