【发布时间】:2018-07-05 09:01:57
【问题描述】:
我在下面有这段代码(在 sql server 2017 上运行):
WITH selection AS (
SELECT servertimestamp
FROM eventlog
WHERE servertimestamp BETWEEN '5/29/2018' AND DATEADD(dd, +1, '6/29/2019')
AND (attributes LIKE '%N<=>PeopleIn%'))
(SELECT DATEADD(HOUR, DATEDIFF(HOUR, 0, servertimestamp) - (DATEDIFF(HOUR, 0, servertimestamp) % 2), 0) as timestamp , COUNT(servertimestamp) AS GONE_OUT
FROM selection
WHERE DATEPART(hh, servertimestamp) BETWEEN 8 AND 20
GROUP BY DATEADD(HOUR, DATEDIFF(HOUR, 0, servertimestamp) - (DATEDIFF(HOUR, 0, servertimestamp) % 2), 0))
ORDER BY timestamp
下面的截图也显示了执行代码的结果:
此代码的作用是显示每天有多少人进入建筑物。数据按 2 小时分组。
我想要做的是添加一列,显示在我已经使用的相同时间段内走出大楼的人数。 下面我给你一个我想做的例子:
请注意,在第 6 行,我使用了 LIKE 运算符(属性 LIKE '%NPeopleIn%')。这意味着对于附加列,我必须做出类似的选择,但不同的是使用 属性 LIKE '%NPeopleOut%'。
我可以使用 UNION 运算符来实现吗?还有其他更明显或更简单的方法吗?
您的帮助将不胜感激, 谢谢。
【问题讨论】:
-
你可以用 UNION 来做,或者你可以用 PIVOT 更干净地做整个事情,我想。不过,我需要花一个小时左右的时间来写出逻辑。
标签: sql-server database ssms sql-server-2017 sql-server-2017-express