每月过滤SQL查询结果并进入excel文件

时间:2015-04-30 10:17:58

标签: sql sql-server

我对sql查询事情很陌生,所以如果我在以前的威胁中找不到答案,我会合适。

这就是我要找的东西。 我必须在地点和月份中分配金额。 位置在此DB中称为HOST。可以在名为archiveddatetime的表的结果中找到月份。

我现在得到的是:

相同查询的13倍,然后手动输入带有月份语句的where子句。如果我这样做并且我有3个不同的HOSTS它意味着3x13结果手动复制到excel。这就是我想要实现的自动化。

到目前为止,这是我的代码:

SELECT COUNT(*)AS TotalAmountOfArchivedStudies2014BHU03
FROM   receivedstudies
WHERE  ( archiveddatetime BETWEEN '2014-01-01 00:00:00.000' AND '2015-01-01 00:00:00.000' )
       AND ( HOST LIKE 'ABC01%' );

SELECT COUNT(*)AS TotalAmountOfArchivedStudies2014BHU03
FROM   receivedstudies
WHERE  ( archiveddatetime BETWEEN '2014-01-01 00:00:00.000' AND '2014-02-01 00:00:00.000' )
       AND ( HOST LIKE 'ABC01%' );

SELECT COUNT(*)AS TotalAmountOfArchivedStudies2014BHU03
FROM   receivedstudies
WHERE  ( archiveddatetime BETWEEN '2014-02-01 00:00:00.000' AND '2014-03-01 00:00:00.000' )
       AND ( HOST LIKE 'ABC01%' ); 

我知道大多数方法可以将13个结果放入一个查询中,这可以安全地转换为excel。但也许对于同一查询中的HOST'ABC02'和'ABC03'。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用GROUP BY上的MONTH(archiveddatetime)WITH ROLL UP

select HOST,MONTH(archiveddatetime),COUNT(*) As TotalAmountOfArchivedStudies
from receivedstudies
where Year(archiveddatetime) = 2014
GROUP BY HOST,MONTH(archiveddatetime)
WITH ROLLUP

Rollup也会为您提供累计COUNTs的记录。