Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择不同的列A,其中列B包含所有必需的数据?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 选择不同的列A,其中列B包含所有必需的数据?

Sql 选择不同的列A,其中列B包含所有必需的数据?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个考勤系统表(IN/OUT),下面是一个示例数据 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 |

我有一个考勤系统表(IN/OUT),下面是一个示例数据

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
 ...........
我想要得到的是所有ID,在我给出的每个日期都有一个进出交易,所以在我的示例中,如果我给出3月21日和22日,我将只得到ID的1-3,因为4在3月21日没有进出交易。我尝试使用IN语句,但不起作用,因为它检索在任何日期具有事务的所有ID。

尝试以下操作:

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