簡體   English   中英

使用變量列創建sql動態表

[英]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.

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