Sql Query根据年份(“CreatedDate”列)

时间:2015-10-02 03:35:04

标签: sql sql-server tsql

我有以下需要:

当我加入2个表时,我得到如下记录: enter image description here

以下是我用来获得上述结果的查询:

Select R.[StatusCode] , RS.[StatusName], R.[CreatedDate]

FROM Table1 as R
Inner Join Table2 as RS
ON R.StatusCode=RS.StatusName

order by R.CreatedDate;

我的要求是:我想计算每年不同StatusName的总数(基于CreatedDate)。

即, 2012年获得了 -

3 - “完成”状态名称的记录
1 - “void”StatusName的记录 2 - “匹配”StatusName的记录

2013年 -

2 - “取消”状态名称的记录
3 - “IPR”StatusName的记录
2 - “Void”StatusName的记录

预期输出:

enter image description here

稍后我必须将预期的数据导入Excel。任何人都可以帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

Select RS.[StatusName], DATEPART ( datepart , R.[CreatedDate] ) as Y, COUNT(RS.[StatusName]) As Total
FROM Table1 as R
Inner Join Table2 as RS
ON R.StatusCode=RS.StatusName
GROUP BY DATEPART ( datepart , R.[CreatedDate] )

如果您不希望重复年份,请在CTE中包含现有查询,在列中添加ROW_NUMBER OVER PARTITION,这将为每组值创建RN。在外部查询中,只需使用CASE选择GRP_RN = 1的值,否则选择空字符串。

如果您需要该部分,请查看此参考:

shows blanks for repeating values in a result set