【发布时间】:2021-12-24 21:40:46
【问题描述】:
我有一个表格数据“销售额”,其中包含按产品和商店划分的每个商店的销售额。
| id | sales | shop |
|---|---|---|
| 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 | sales1 | shop1 | sales2 | shop2 | sales3 | shop3 |
|---|---|---|---|---|---|---|
| 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 |
我尝试将数据与 some (select * from sales where shop='01') 作为 a 进行左连接,但它不起作用,因为 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,试图改变像c.id = b.id这样的ON子句加入不同的数据并给我不同的结果。
我该如何解决这个问题?
【问题讨论】:
标签: sql sql-server join