Reputation: 129
I have 2 columns, id and date. If the date is in 2/3/16, 2/4/16, 2/5/16, I want to return all values. Hard to explain so here's an example. The following should return all 3 rows for id 1 and none of 2. Any help would be appreciated. Thanks!
id date
1 2/1/16
1 2/2/16
1 2/3/16
2 2/11/16
2 2/12/16
Upvotes: 0
Views: 40
Reputation: 586
This is Oracle syntax; try to rewrite it for 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'))
);
Upvotes: 0
Reputation: 72185
Try this:
SELECT id, [date]
FROM mytable
WHERE id IN (SELECT Id
FROM mytable
WHERE [date] IN ('2016-03-02', '2016-04-02', '2016-05-02'))
Upvotes: 1