Insert Into #Tmp1
Select '王',12 Union
Select '李',10 Union
Select '王',20 Union
Select '张',30
Select * From #Tmp1
Select Shtno=(Select Count(*)+1 From (Select * From #Tmp1 Union All Select A+'(小计)' As A,Sum(B) As B From #Tmp1 Group By A) D Where
D.A+Cast(D.B As Char(10))<C.A+Cast(C.B As Char(10))),*
From (Select * From #Tmp1 Union All Select A+'(小计)' As A,Sum(B) As B From #Tmp1 Group By A) C Order By Shtno
--創建測試環境
Create Table T_1
(
A NvarChar(10),
B Int)
Insert Into T_1 Select N'王',12
Union Select N'李',10
Union Select N'王',20
Union Select N'张',30
GO
--測試
Select
ID = Identity(Int, 1, 1), *
Into #T
From
(Select * From T_1
Union
Select A + N'(小计)', SUM(B) As B From T_1 Group By A) A
Select * From #T
Drop Table #T
GO
--刪除測試環境
Drop Table T_1
--結果
/*
ID A B
1 王 12
2 王 20
3 王(小计) 32
4 李 10
5 李(小计) 10
6 张 30
7 张(小计) 30
*/
--創建測試環境
Create Table T_1
(
A NvarChar(10),
B Int)
Insert Into T_1 Select N'王',12
Union Select N'李',10
Union Select N'王',20
Union Select N'张',30
GO
--測試
Select
ID = Identity(Int, 1, 1),
(Case When Grouping(B) = 1 Then A + N'(小计)' Else A End) As A,
SUM(B) As B
Into #T
From
T_1
Group By A, B
With Rollup
Having A Is Not Null
Select * From #T
Drop Table #T
GO
--刪除測試環境
Drop Table T_1
--結果
/*
ID A B
1 王 12
2 王 20
3 王(小计) 32
4 李 10
5 李(小计) 10
6 张 30
7 张(小计) 30
*/
Select
ID = Identity(Int, 1, 1),
(Case When Grouping(B) = 1 Then A + N'(小计)' Else A End) As A,
SUM(B) As B
Into #T
From
T_1
Group By A, B
With Rollup
Having A Is Not Null