我无法理解这一行动所需的逻辑。我有多个帐户的月份运行数据。我想指定输出使用SQL Server 2016在短时间内忽略某些帐户。
我想在2017-09-14 14:30和2017-09-14 15:30之间排除所有数据,但仅限于编号为310722 310820 106758 310169的帐户,但我想要包含来自的数据所有其他时间的帐户(以及所有其他帐户)。
我试过
WHERE
([start time] NOT BETWEEN 2017-09-14 14:30 and 2017-09-14 15:30 AND Account NOT IN ( 310722, 310820, 106758, 310169,) )
但这太过分了。 NOT和AND逻辑搞砸了我。有人可以帮忙吗?
修改
显然我的问题不清楚。道歉。我在附加样本数据时遇到了一些麻烦,但下面是我的最大努力。
Start Time Type Connected (secs) Account
13/09/2017 00:02:13 Normal operator call 20 141475
13/09/2017 00:02:15 Normal operator call 59 310523
13/09/2017 00:03:42 Normal operator call 83 833694
我希望在特定时间内包含特定帐户中的所有数据。也许Venn Diagram会有所帮助
蓝色区域是我不想要其他所有内容的数据,包括其他时间提到的帐户以及我想要保留的上述时间内的所有其他帐户。
如果有人有更详细的建议让这个问题变得不那么可怕,我会感激他们。 :)
答案 0 :(得分:0)
条件where子句怎么样?
WHERE
[start time] < CASE WHEN Account in (310722,310820,106758,310169) THEN '2017-09-14 14:30' ELSE DATEADD(DAY,1,GETDATE()) END
OR [start time] > CASE WHEN Account in (310722,310820,106758,310169) THEN '2017-09-14 15:30' ELSE '1900-01-01' END
答案 1 :(得分:0)
你可以用这个
WHERE
NOT ([start time] BETWEEN '2017-09-14 14:30' and '2017-09-14 15:30' AND Account IN ( 310722, 310820, 106758, 310169) )