如何使用COUNT(*),但通过在另一列中重复值来细分

时间:2019-06-21 14:26:48

标签: sql sql-server

我有一个SQL格式的表,其格式如下:

ReportLogID | SiteID | ReportName | ReportPath   | UserName | RunDateTime 
------------|--------|------------|--------------|----------|------------
1           | 3      | Report 1   | C:\1.report  |User      | 2014-11-26
2           | 8      | Report 1   | C:\1.report  |User      | 2014-12-20
3           | 3      | Report 2   | C:\2.report  |User      | 2014-12-21
4           | 3      | Report 1   | C:\1.report  |User      | 2014-12-22

我有以下代码来统计报表的总运行次数以及运行的最后日期:

SELECT ReportName, MAX(RunDateTime) AS LASTRAN, COUNT(*) AS TIMESRAN FROM ReportLog GROUP BY ReportName ORDER BY TIMESRAN DESC 

我需要在考虑SiteID的情况下运行此报告。我知道该报告已经运行了X次,并且它的最后运行日期为X。但是,我需要按SiteID对其进行细分-因此,报表1对SiteID 3总共运行了X次,最后一次在YYYY-MM-DD上运行。我遇到了一个障碍。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤进行操作:

SELECT ReportName
  , MAX(RunDateTime) AS LASTRAN
  , COUNT(*) AS TIMESRAN
FROM ReportLog
GROUP BY ReportName
  , SiteID
ORDER BY TIMESRAN DESC