Sql server 如何使用数据将列值从初始值到最终值排序
我有一张这样的桌子Sql server 如何使用数据将列值从初始值到最终值排序,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一张这样的桌子 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 v
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)
我需要根据SELECT中pic子句中显示的要求获取输出。而且
要获得给定的输出,您可以遵循以下步骤
Select
DISTINCT(
'Change From '+ Cast(initial AS Varchar(10))+' to '+Cast(final AS Varchar(10))
) AS DATA
,SUM(Case When year=2017 Then 1 Else 0 END) AS [2017]
,SUM(Case When year=2016 Then 1 Else 0 END) AS [2016]
From Input_table
Group By initial, final
ORDER BY DATA ASC
注意:-如果你愿意真正使用它。然后我可能会建议,比这个更好的解决方案。我需要输出中的[data]、[2016]、[2017]列,请查看屏幕截图。这并不是简单的按初始顺序从输入表中选择不同的初始值从输入表中选择不同的年份选择“从不同的初始值更改为最终值作为[数据],将(年)计算为“2016”,将(年)计算为“2017”
Select
DISTINCT(
'Change From '+ Cast(initial AS Varchar(10))+' to '+Cast(final AS Varchar(10))
) AS DATA
,SUM(Case When year=2017 Then 1 Else 0 END) AS [2017]
,SUM(Case When year=2016 Then 1 Else 0 END) AS [2016]
From Input_table
Group By initial, final
ORDER BY DATA ASC