Sql分組查詢,如何把縱向顯示的結果變成橫向顯示

2021-10-16 18:21:30 字數 1392 閱讀 9505

建庫並錄入資料:

create table booklibary

([圖書館] varchar(10),[科目] varchar(10),[數量] int)

insert into booklibary

select 'a','語文',5

union all select 'b','數學',6

union all select 'c','英語',3

union all select 'b','語文',4

union all select 'a','數學',3

表資料:

圖書館        科目         數量

---------- ---------- -----------

a          語文         5

b          數學         6

c          英語         3

b          語文         4

a          數學         3

sql語句:

declare @execsql varchar(8000)

set @execsql='select  [圖書館]'

select @execsql=@execsql+',max(case when [科目]='''+[科目]

+''' then [數量] else '''' end) as '''+ [科目]

+ '''' from  booklibary group by  [科目]

set @execsql=@execsql+'from booklibary group by [圖書館]'

print @execsql

exec(@execsql)

最後@execsql是這樣子的:

select  [圖書館],

max(case when [科目]='數學' then [數量] else '' end) as '數學',

max(case when [科目]='英語' then [數量] else '' end) as '英語',

max(case when [科目]='語文' then [數量] else '' end) as '語文'

from booklibary group by [圖書館]

結果:圖書館        數學          英語          語文

---------- ----------- ----------- -----------

a          3           0           5

b          6           0           4

c          0           3           0

原創 把SQL的動態查詢改成SQL查詢

在我們使用儲存過程的時候,有時為了組合查詢條件,不得不使用動態查詢。比如下面的 create proc usp search city intas begin declare sql varchar 8000 set sql n select from testtable where 1 1 if ...

mysql查詢結果翻轉 如何把sql結果集翻轉

我用的是sql 請教如何把sql結果集翻轉?如下一張表 checkinout 顯示員工簽到,簽退的考勤表,checktype 考勤型別 i 表示簽到,o 表示簽退 timeflag 4表示上午,5表示下午 checktime 簽到,籤 userid checktype checktime timef...

sql 分組統計時的查詢及效率

一張user表 裡面有id 國籍 出生日期等字段 現在要統計各個國家成年的人有多少 未成年的人有多少 結果如下圖所示 第一種寫法 select gjname,select count 0 from criminal base info where gjname baseinfo.gjname and...