我想开发一个sql查询来检查给定的日期是否至少在每个文档组中。下表为
DocID UserID StartDAte EndDAte OfficialName
1 1 10/1/18 10/3/18 A
2 1 10/5/18 10/10/18 A
3 1 10/1/18 10/9/18 B
4 1 10/1/18 10/9/18 C
5 1 10/1/18 10/5/18 D
6 1 10/7/18 10/20/18 D
有4个文档组,即a、b、c、d。需要检查给定的日期是否至少在每个组中的每个文档中。
eg date : 10/2/18 is in first record of A,B,C, and first record of D. So it is passed.
eg date : 10/4/18 is not in either of documents in A hence failed.
eg date : 10/8/18 is second document in A,B,C, and second document in D hence passed.
eg date : 10/6/18 is in A but not in D hence failed.
因为我必须为给定的用户和日期写这个,所以我必须使用“in”子句来表示“officialname”,但是如何在每个“officialname”组中的任何文件中为给定用户的所有文档添加“or”来检查日期?
感谢您的帮助。需要补充一些不清楚的东西。正式文件的数量不是固定的。可能是一个或多个。
3条答案
按热度按时间gz5pxeao1#
我想你想要:
如果您希望对所有用户(给定日期除外)使用此功能:
abithluo2#
聚合并获得组的不同计数。如果你得到4,你就有一场比赛,否则你就没有了。
您还可以添加
HAVING count(DISTINCT t.officialname) = 4
当且仅当没有匹配项时得到一个空集。6jjcrrmo3#
您可以使用: