Sql 在各自的行中显示每个组的列总数

Sql 在各自的行中显示每个组的列总数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的select语句返回: 我需要我的选择返回以下内容: 我需要按列A分组,并在自己的行中显示每个组的总数。日期填充在我的代码中 我所能想到的就是选择A列的所有可能性,然后循环遍历A列的名称,选择具有该列名称的所有列,然后将每个列合并。有更好的方法吗 我认为可以通过分组集来实现这一点。但是,每一行没有唯一的标识符。所以,我认为这就是逻辑: with t as ( select t.*, row_number() over (order by (select null)) as seq

我的select语句返回:

我需要我的选择返回以下内容:

我需要按列A分组,并在自己的行中显示每个组的总数。日期填充在我的代码中


我所能想到的就是选择A列的所有可能性,然后循环遍历A列的名称,选择具有该列名称的所有列,然后将每个列合并。有更好的方法吗

我认为可以通过分组集来实现这一点。但是,每一行没有唯一的标识符。所以,我认为这就是逻辑:

with t as (
      select t.*, row_number() over (order by (select null)) as seqnum
      from (<your query here>) t
     )
select columnA, sum(columnB), sum(ColumnC)
from t
group by grouping sets((seqnum, columnA), (columnA));

你可以试试这个,它会根据你的要求给出结果

select columnA,columnB,columnC   from  tablename
union all
select columnA,sum(columnB),SUM(columnC)  
from tablename group by col1 
order by columnA,columnB,columnC

您可以简单地编写一个聚合查询并使用SELECT语句进行联合,但这取决于您希望在DATE列中使用什么。
with t as (
      select t.*, row_number() over (order by (select null)) as seqnum
      from (<your query here>) t
     )
select columnA, sum(columnB), sum(ColumnC)
from t
group by grouping sets((seqnum, columnA), (columnA));
select columnA,columnB,columnC   from  tablename
union all
select columnA,sum(columnB),SUM(columnC)  
from tablename group by col1 
order by columnA,columnB,columnC