建庫並錄入資料:
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...