我有一個表格資料,“銷售額”,其中包含每個商店按產品和商店的銷售額。
| ID | 銷售量 | 店鋪 |
|---|---|---|
| 1 | 100.0 | 01 |
| 1 | 30.0 | 02 |
| 2 | 2.0 | 01 |
| 3 | 100.0 | 01 |
| 3 | 30.0 | 02 |
| 4 | 100.0 | 03 |
| 4 | 10.0 | 02 |
我嘗試以一種格式獲取資料,該格式為我提供了該商品的 id 和同一行中每個商店的銷售額,如下所示:
| ID | 銷售額1 | 店鋪1 | 銷售2 | 店鋪2 | 銷售3 | 店鋪3 |
|---|---|---|---|---|---|---|
| 1 | 100.0 | 01 | 30.0 | 02 | 0.0 | 03 |
| 2 | 2.0 | 01 | 0.0 | 02 | 0.0 | 03 |
| 3 | 100.0 | 01 | 30.0 | 02 | 0.0 | 03 |
| 4 | 0.0 | 01 | 10.0 | 02 | 100.0 | 03 |
我嘗試將資料與一些 (select * from sales where shop='01') 左連接,但它不起作用,因為 ON 子句僅連接一個表,在本例中為 a。
這是 SQL 查詢:
select *
from
(select *
from sales
where shop = '01') as a
left join
(select *
from sales
where shop = '02') as b on a.id = b.id
left join
(select *
from sales
where shop = '03') as c on a.id = c.id
按照這個邏輯,我丟失了資料的結果 4、10.0、02,試圖更改 ON 子句,如 c.id = b.id 加入不同的資料并給我不同的結果。
我該如何解決這個問題?
uj5u.com熱心網友回復:
不太確定為什么每個商店價值都有一列。當您有 Sales1、Sales2 等時,這似乎是多余的。但是您可以通過使用條件聚合比所有這些查詢更容易解決這個問題。像這樣的事情應該適合你。
select id
, Sales1 = isnull(max(case when Shop = '01' then sales end), 0)
, Shop1 = '01'
, Sales2 = isnull(max(case when Shop = '02' then sales end), 0)
, Shop2 = '02'
, Sales3 = isnull(max(case when Shop = '03' then sales end), 0)
, Shop3 = '03'
from sales
group by id
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/365540.html
標籤:sql sql-server 加入
