0
所以我有數據標準化這樣目前:SQL變換合計值到各個列
+----------+-------+-------+
| day | color | value |
+----------+-------+-------+
| 1/1/2016 | red | 1 |
+----------+-------+-------+
| 1/1/2016 | blue | 2 |
+----------+-------+-------+
| 1/1/2016 | green | 3 |
+----------+-------+-------+
| 1/2/2016 | red | 4 |
+----------+-------+-------+
| 1/2/2016 | blue | 5 |
+----------+-------+-------+
| 1/2/2016 | green | 6 |
+----------+-------+-------+
我想將其改造成這種佈局的報告:
+----------+-----+------+-------+
| day | red | blue | green |
+----------+-----+------+-------+
| 1/1/2016 | 1 | 2 | 3 |
+----------+-----+------+-------+
| 1/2/2016 | 4 | 5 | 6 |
+----------+-----+------+-------+
的代碼我使用這樣做是:
with
red as (
select
day
,value as red
from mytable
where color='red'
),
blue as (
select
day
,value as blue
from mytable
where color='blue'
),
green as (
select
day
,value as green
from mytable
where color='green'
)
select
red.*
,blue.blue
,green.green
from red red
inner join blue blue
on red.day=blue.day
inner join green green
on red.day=green.day
所以我的問題是,是否有一個更容易或不那麼羅嗦的方式來做到這一點在甲骨文?對於這樣一個簡單的任務似乎有點愚蠢!另外,這可能不是很有效。
如果他的實際數據集中包含「NULL」值,則最好使用比MAX()更多的'MAX()'。 –
啊謝謝,我相信這個答案是我正在尋找的,但是像MAX()這樣的tim說道。 :) – barker
對不起,如果我錯了,只需用max取代sum。我已更新查詢。 – Tajinder