hol*_*den 2 mysql sql group-by aggregate sql-order-by
我有一张桌子,里面有我想要的4件事......名称,价格,数量,以及具体的日期
每个日期有很多条目:
Name Price Date
Twin Private $25 06/02/09
Double $35 06/02/09
Single $20 06/02/09
Twin Private $25 06/03/09
Double $35 06/03/09
Single $20 06/03/09
Twin Private $25 06/04/09
Double $35 06/04/09
Single $20 06/04/09
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它压缩成:
Name Price_06/02/09 Price_06/03/09 Price_06/04/09
Twin Private $25 $25 $30
Double $35 $35 $50
Single $20 $20 $40
Run Code Online (Sandbox Code Playgroud)
我想这会做到:
select Name,
max(Price_06/02/09) as Price_06/02/09,
max(Price_06/03/09) as Price_06/03/09,
max(Price_06/04/09) as Price_06/04/09
from (
select Name,
case Date
when '06/02/09' then Price
else null
end as Price_06/02/09,
case Date
when '06/03/09' then Price
else null
end as Price_06/03/09,
case Date
when '06/04/09' then Price
else null
end as Price_06/04/09
from Rates) as Aggregated
group by
Name
Run Code Online (Sandbox Code Playgroud)
这有两个阶段,内部查询将数据拉伸出来,所以你最终得到:
Name Price_06/02/09 Price_06/03/09 Price_06/04/09
Twin Private $25 null null
Double $35 null null
Single $20 null null
Twin Private null $25 null
Double null $35 null
Single null $20 null
Twin Private null null $25
Double null null $35
Single null null $20
Run Code Online (Sandbox Code Playgroud)
然后外部查询按名称分组以将其展平为:
Name Price_06/02/09 Price_06/03/09 Price_06/04/09
Twin Private $25 $25 $25
Double $35 $35 $35
Single $20 $20 $20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |