2016-03-23 8 views
0

Bir katılım sistemi (IN/OUT) tablosu var, örnek bir veri. Benim örnekte böyleceFarklı sütun A'yı seçin, burada B sütunu gereken tüm verileri içerir?

ID |   Date   | Transaction 
1 | 2016-03-21 06:04:55.000 |  I 
2 | 2016-03-21 06:04:55.000 |  I 
3 | 2016-03-21 06:04:55.000 |  I 
4 | 2016-03-21 06:04:55.000 |  I 
1 | 2016-03-21 17:04:55.000 |  O 
2 | 2016-03-21 17:04:55.000 |  O 
3 | 2016-03-21 17:04:55.000 |  O 
1 | 2016-03-22 06:04:55.000 |  I 
2 | 2016-03-22 06:04:55.000 |  I 
3 | 2016-03-22 06:04:55.000 |  I 
4 | 2016-03-22 06:04:55.000 |  I 
1 | 2016-03-22 17:04:55.000 |  O 
2 | 2016-03-22 17:04:55.000 |  O 
3 | 2016-03-22 17:04:55.000 |  O 
4 | 2016-03-22 17:04:55.000 |  O 
........... 

Ne almak istiyorum ben vermek her tarih için bir IN ve OUT işlem söz konusuysa tüm kimlikleri, ben 21 Mart verip 22 eğer ID'nin 1-3 sadece 4 beri gelmez alacak 21 Mart'ta bir OUT işlemim var. Bir IN deyimi kullanmayı denedim, ancak herhangi bir tarihte bir işlemi olan tüm kimlikleri aldığı için işe yaramıyor.

cevap

0

bu deneyin:

SELECT ID 
FROM mytable 
WHERE CAST([Date] AS Date) IN ('2016-03-21', '2016-03-22') 
GROUP BY ID 
HAVING COUNT(DISTINCT CASE 
         WHEN CAST([Date] AS Date) = '2016-03-21' THEN Transaction 
         END) = 2 
     AND 
     COUNT(DISTINCT CASE 
         WHEN CAST([Date] AS Date) = '2016-03-22' THEN Transaction 
         END) = 2 
+0

mükemmel, teşekkür ederim. – crimson589

İlgili konular