[英]SQL row value as column name
我在C#方面非常有經驗,但是仍然還是SQL的初學者。
我們有一個使用MSSQL數據庫的C#應用程序。
我們的應用程序的一部分只是簡單地編寫一系列預查詢,作為報告,應用程序通過簡單地運行查詢並將返回的表粘貼到gridView即可顯示該報告。 用戶正在請求一個新的報告,我不能完全確定僅使用SQL還是可以的,並且需要操縱返回的數據才能使其看起來正確。
用戶想要的數據(以他們希望的方式呈現)將要求我能夠使用此表:
Date Category Count --------------------- date1 Cat1 x1 date1 Cat2 y1 ... date1 CatN z1
從此查詢中獲得:
select Date, Category, COUNT(*) as 'Count'
from Table
group by Date, Category
變成這張桌子:
\n 日期Cat1 Cat2 ... CatN\n ---------------------------\n date1 x1 y1 ... z1\n date2 x2 y2 ... z2\n
這樣我就可以按日期將其加入到他們想要的另一半數據中。
長篇大論的解釋,簡短的問題和后續操作:僅使用SQL,無論多么痛苦,都可以做到嗎?
如果是這樣,怎么辦?
您需要使用pivot
。 一個可能給您帶來問題的問題是,由於查詢永遠無法返回動態數量的列(即使您正在旋轉的列也是如此),因此您必須知道您擁有多少個類別。
我沒有您的架構,但這應該是正確的(可能需要在這里和那里進行一些潤色,但這應該可以讓您入門)...
select
Date, [1] as Cat1, [2] as Cat2, [3] as Cat3, ...
from
(select date, category from table) p
pivot (
count(*)
for
Category in ([1],[2],[3],...)
) pivoted
order by
pivoted.date
您將要看一下PIVOT操作:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.