sql-server - 在单个 select 语句中聚合数据,无需连接和透视

标签 sql-server sql-server-2008 t-sql

我有一个表Input_Table定义如下

create table Input_Table(id int, [year] varchar(100),initial int,final int)

   insert into Input_table values(1,'2017',1,11)
   insert into Input_table values(2,'2017',8,11)
   insert into Input_table values(3,'2017',3,33)
   insert into Input_table values(4,'2016',6,44)
   insert into Input_table values(5,'2016',6,44)
   insert into Input_table values(6,'2017',6,44)
   insert into Input_table values(7,'2016',4,8)
   insert into Input_table values(8,'2017',2,8)

我需要根据图中所示的要求获得输出,而不使用枢轴或连接 enter image description here

最佳答案

您可以使用条件聚合:

SELECT 'Change from ' + cast(t.initial as varchar(20)) + ' to ' + cast(t.final as varchar(20)) as [data],
       COUNT(case when t.year = 2017 THEN 1 END) as [2017],
       COUNT(case when t.year = 2016 THEN 1 END) as [2016]
FROM input_table t
GROUP BY t.initial,t.final

关于sql-server - 在单个 select 语句中聚合数据,无需连接和透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710210/

相关文章:

java - 具有 SQL Server Identity 列的 Hibernate Save 方法

sql-server - 如何伪造旧版本的 SQL Server 以支持遗留应用程序代码

sql-server - 用降序值替换 SQL Server 中的 XML 元素

sql - 如何将分钟的时间值四舍五入为小时?

sql - 可以从 t-sql 中远程执行查询吗?

sql四舍五入到5的倍数?

sql-server - 用 substring 和 findstring 分隔数据

c# - 在我的 .aspx 页面上循环遍历 SQL Server 结果

sql - 在 Sql server 2008 中将 nvarchar 转换为 bigint

sql-server - 为什么 T-SQL 中 LEN( char(32) ) = 0?