首页 > 解决方案 > SQL 中可能的枢轴

问题描述

我正在尝试从数据库中获取数据以获取 60 天和 90 天未使用的应用程序的数量。我已经尝试过以下方法:

SELECT 
Uname AS [User ID],
AppName As [Application],
COUNT(*) AS [Unused App for 60 Days]
FROM APPTABLE 
WHERE LAST_USE<getutcdate()-60 
GROUP BY Uname, AppNameNow 

我也想在 90 天内做同样的事情,但在同一个查询中。我很难做到。

你能帮我理解怎么做吗?感谢您的回复。

标签: sqltsql

解决方案


使用条件聚合。我建议使用dateadd()明确说明逻辑的意图:

SELECT Uname AS [User ID], AppName As [Application],
       SUM(CASE WHEN LAST_USE < DATEADD(DAY, -60, getutcdate()) THEN 1 ELSE 0 END) as unused_60,
       SUM(CASE WHEN LAST_USE < DATEADD(DAY, -90, getutcdate()) THEN 1 ELSE 0 END) as unused_90
FROM APPTABLE 
WHERE LAST_USE < DATEADD(DAY, -60, getutcdate())
GROUP BY Uname, AppNameNow 

请注意,该WHERE子句仍在过滤日期。但是您需要注意WHERE与 中的时间范围一致SELECT


推荐阅读