[英]Dynamic query for two way frequency table or crosstab/pivot issue
我有一個具有表名稱的數據庫模型,該模型具有兩列Category和Agegroup。 我的表(只是一個例子)是:
Category Agegroup
1 2-4
2 7-9
1 9-11
3 7-9
2 7-9
1 2-4
3 2-4
1 9-11
我想要這樣的輸出:
Category 2-4 7-9 9-11
1 2 0 2
2 0 2 0
3 1 1 0
我有一個像這樣的動態查詢,但是我得到了不同的方式。
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Agegroup)
from dbo.model
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Category,' + @cols + '
from dbo.model
pivot
(
count(Agegroup)
for Agegroup in (' + @cols + ')
) p '
execute(@query)
請提供您的意見以提供幫助。 類別1是蘋果,類別2是橙色,依此類推。
我的輸出:
Category 2-4 7-9 9-11
1 1 0 0
1 1 0 0
2 0 1 0
1 0 0 1
等等..
我已經十年沒有使用SQL Server了,但這就是結果查詢在MySQL中的樣子:
select Category, sum(if(Agegroup='2-4',1,0)), sum(if(Agegroup='7-9',1,0)), sum(if(Agegroup='9-11',1,0))
from dbo.model
group by Category;
在SQL Server中嘗試以下生成的SQL,如果它為您提供了正確的數據,則您“必須”就必須動態地進行處理...
但是,也許使用SQL Server的“數據透視”功能可以更好地解決此問題?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.