[英]sql dynamic table creation with variable columns
我有一個實際上已經整齊結構的表,但我需要更改輸出格式。 初始表格式
Class Type Value
c1 t1 1
c2 t1 2
c3
c1 t2 3
c2 t2 2
c3 t2 5
c2 t3 1
c3 t4 6
c1 t1 9
c2 t1 2
我需要動態創建一個表,該表具有不同的類作為行,類型作為列並對值進行求和。 類型不固定,所以我無法構建靜態表。 如何動態創建一個看起來像的表
class t1 t2 t3 t4
c1 10 3 0 0
c2 4 2 1 0
c3 0 5 0 6
有沒有辦法用sql輕松地做到這一點?
當我指向pivot時,我只是為了了解mysql不支持這一點。 在sql模仿數據透視中最簡單,最直接的方法是什么?
如果數字類型固定為4(t1,t2,t3和t4)。 我們可以不用PIVOT
做到這一點:
嘗試這個:
SELECT class,
COALESCE(SUM(CASE WHEN Type='t1' THEN Value END),0) AS t1,
COALESCE(SUM(CASE WHEN Type='t2' THEN Value END),0) AS t2,
COALESCE(SUM(CASE WHEN Type='t3' THEN Value END),0) AS t3,
COALESCE(SUM(CASE WHEN Type='t4' THEN Value END),0) AS t4
FROM TableName
GROUP BY class
結果:
CLASS T1 T2 T3 T4
c1 10 3 0 0
c2 4 2 1 0
c3 0 5 0 6
在SQL Fiddle中查看結果。
如果是4種類型 (即T1,T2,T3,T4) 只 ,嘗試的情況下施工,這樣的事情:
select class,
sum(case
when Type = 't1' then
value
else
0
end) as t1,
sum(case
when Type = 't2' then
value
else
0
end) as t2,
sum(case
when Type = 't3' then
value
else
0
end) as t3,
sum(case
when Type = 't4' then
value
else
0
end) as t4
from MyTable
group by class
一般情況下(如果t1..tn不固定)你必須轉動
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.