Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使n行合并为一行,并显示其他行不变_Sql Server_Tsql - Fatal编程技术网

Sql server 如何使n行合并为一行,并显示其他行不变

Sql server 如何使n行合并为一行,并显示其他行不变,sql-server,tsql,Sql Server,Tsql,我有这张桌子 我正在尝试使用total将多行添加到一行中 例如,如果输入为2,则结果是一行,该行的行数为行1到行2,行3到行结束 以下是我想要的模拟数据结果: Col1 Col2 -------------------- 1 150(sum(row1 and row2) 2 60 3 70 4 20 您可以按大小写分组,然后添加带有秩或行号的行号 您可以按大小写分组,然后添加带有秩或行号的行号

我有这张桌子

我正在尝试使用total将多行添加到一行中 例如,如果输入为2,则结果是一行,该行的行数为行1到行2,行3到行结束

以下是我想要的模拟数据结果:

Col1        Col2
--------------------
1           150(sum(row1 and row2)
2            60
3            70
4            20
您可以按大小写分组,然后添加带有秩或行号的行号

您可以按大小写分组,然后添加带有秩或行号的行号

但请注意,对于第2行以后的行,col1并没有更改

但请注意,对于第2行以后的行,col1并没有更改

输入表中Col1中的值是否始终以一为基础且密集,即从1开始,并且没有丢失或重复的值?如果不是,则会使事情变得复杂一些,因为要求和的前n个值可能不是Col1到n。输入表中Col1中的值是否始终是基于一的密集值,即从1开始,并且没有缺失或重复的值?如果不是,则会使事情复杂一些,因为要求和的前n个值可能不是Col1到n。
Col1        Col2
--------------------
1           150(sum(row1 and row2)
2            60
3            70
4            20
SELECT 
  ROW_NUMBER() OVER (ORDER BY col1), 
  col2 
FROM 
  (
    SELECT 
      CASE WHEN col1 <= 2 THEN 0 ELSE col1 END col1, 
      SUM([Col2]) col2 
    FROM 
      some_table 
    GROUP BY 
      CASE WHEN col1 <= 2 THEN 0 ELSE col1 END
  ) a
select min(col1), sum(col2) from table
where col1 is <= 2
UNION
select col1, col2 from table
where col1 is > 2