簡體   English   中英

SQL行值作為列名

[英]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操作:

http://www.tsqltutorials.com/pivot.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM