table c1 c2 c3
姓名 部门 工资
----------------------------
aa 生产 1000
aa 生产 1200
bb 生产 1300
bb 生产 1500
现在求用一句SQL语句求出以下形式 aa 生产 1000
aa 生产 1200
合计 2200
bb 生产 1300
bb 生产 1500
合计 2800别人问的,看的我郁闷,高手看看能实现吗
姓名 部门 工资
----------------------------
aa 生产 1000
aa 生产 1200
bb 生产 1300
bb 生产 1500
现在求用一句SQL语句求出以下形式 aa 生产 1000
aa 生产 1200
合计 2200
bb 生产 1300
bb 生产 1500
合计 2800别人问的,看的我郁闷,高手看看能实现吗
就算加进去了,如果有簇索引的话,以后再打开“合计”就应该都跑到一起去了吧
建议用excel做,实在没办法要用的时候再导入好了
Create Table TEST
(c1 Varchar(10),
c2 Nvarchar(10),
c3 Int)
--插入數據
Insert TEST Select 'aa', N'生产', 1000
Union All Select 'aa', N'生产', 1200
Union All Select 'bb', N'生产', 1300
Union All Select 'bb', N'生产', 1500
--測試
Select
c1,
c2,
c3
from TEST
Union All
Select
c1+N'合計',
'',
SUM(c3) from TEST
Group By c1,c2
Order By c1
--刪除測試環境
Drop Table TEST
--結果
/*
c1 c2 c3
aa 生产 1000
aa 生产 1200
aa合計 2200
bb 生产 1300
bb 生产 1500
bb合計 2800
*/
现在求用一句SQL语句求出以下形式
---------------------------------------
這是一條語句啊。
select * from table
union
select c1+'合计','' c2,sum(c3) c3 from table
group by c1
)a
如果記錄多了andy1995(拓狼(一一)) 的方法可能就忙不過來了
c1,
c2,
c3
from TEST
Union All
Select
c1+N'合計',
'',
SUM(c3) from TEST
Group By c1,c2
Order By c1
(c1 Varchar(10),
c2 Nvarchar(10),
c3 Int)
--插入數據
Insert TEST Select 'aa', N'生产', 1000
Union All Select 'aa', N'生产', 1200
Union All Select 'bb', N'生产', 1300
Union All Select 'bb', N'生产', 1500select c1,c2=case when grouping(c3)=1 then +'小计' else c2 end,c3=sum(c3)
from test
group by c1,c2,c3 with rollup
having grouping(c2)=0
create table #temp(c1 char(10),c2 char(10),c3 int)
insert into #temp
select 'aa','生产',1000
union select 'aa','生产',1200
union select 'bb','生产',1300
union select 'bb','生产',1500SELECT
CASE when c2 is null THEN '合计'
ELSE c1
END c1,
isnull(c2,'') c2,
SUM(c3) c3
FROM #temp
group by c1,c2 WITH ROLLUPdrop table #temp
/*
c1 c2 c3
---------- ---------- -----------
aa 生产 2200
合计 2200
bb 生产 2800
合计 2800
合计 5000
*/
insert into #temp
select 'aa','生产',1000
union select 'aa','生产',1200
union select 'bb','生产',1300
union select 'bb','生产',1500select case when grouping(c3)=1 then '合计' else c1 end c1,
case when grouping(c3)=1 then '' else c2 end c1,
sum(c3) c3
from #temp
group by c1,c2,c3 with rollup
having grouping(c2)=0drop table #temp/*
c1 c1 c3
---------- ---------- -----------
aa 生产 1000
aa 生产 1200
合计 2200
bb 生产 1300
bb 生产 1500
合计 2800
*/