用于对行进行分组的SQL Pivot函数

用于对行进行分组的SQL Pivot函数,sql,sql-server,pivot,pivot-table,Sql,Sql Server,Pivot,Pivot Table,我正在尝试使用PIVOT转换一个表。 这是我目前的代码: select distinct to_date,[syst1],[syst2],[syst3] from MyTable pivot ( count(systems) for systems in ([syst1],[syst2],[syst3]) ) as PivotTable order by to_date 这就是我得到的结果: 我想把第33行和第34行放在一起,第35行和第36行放在一起,第37行和第

我正在尝试使用PIVOT转换一个表。 这是我目前的代码:

select distinct to_date,[syst1],[syst2],[syst3]
from MyTable
pivot
(
    count(systems)
    for systems
    in ([syst1],[syst2],[syst3])

)
as PivotTable
order by to_date
这就是我得到的结果:

我想把第33行和第34行放在一起,第35行和第36行放在一起,第37行和第38行放在一起 所以它们看起来像这样:


你的轴心应该做你想做的事。除非“截止日期”中有时间成分。这能解决问题吗

select to_date, [syst1], [syst2], [syst3]
from (select cast(to_date as date) as to_date, systems
      from MyTable
     ) mt
pivot (count(systems)
       for systems in ([syst1], [syst2], [syst3])
      ) as PivotTable
order by to_date;

这修复了它,但不是因为强制转换,没有时间组件,而是因为子查询。不知道为什么会这样。Thanks@user2343837 . . . SQL Server使用所有非聚合列定义透视后的每一行。子查询仅选择所需的子集。