gpt4 book ai didi

sql - 如何将 sql 结果条目旋转到列中(透视)

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:00 26 4
gpt4 key购买 nike

我有表a

| id | value   | comment   |
|--------------------------|
| 1 | Some1 | comm1 |
|--------------------------|
| 2 | Some2 | comm2 |
|--------------------------|

我有表b,表a作为外键

| id | id_a  |name    | amount    | factor   |
|--------------------------------------------|
| 1 | 1 |Car | 12 | 2 |
|--------------------------------------------|
| 2 | 1 |Bike | 22 | 5 |
|--------------------------------------------|
| 3 | 2 |Car | 54 | 1 |
|--------------------------------------------|
| 4 | 2 |Bike | 55 | 4 |
|--------------------------------------------|

结果我想要一个组合:

|id| value | comment | Car_Amount | Car_factor | Bike_Amount | Bike_Factor |
|--------------------------------------------------------------------------|
| 1| Some1 | comm1 | 12 | 2 | 22 | 5 |
|--------------------------------------------------------------------------|
| 2| Some2 | comm2 | 54 | 1 | 55 | 4 |
|--------------------------------------------------------------------------|

据我所知,这不是一个支点。但我不确定这是否是个好习惯。我不是 SQL 方面的专家,但像这样混合表看起来完全错误。我的意思是“他们”希望将其作为一个平面结果用于报告...

有可能吗?

谢谢

最佳答案

像这样聚合值:

select 
a.id, a.value, a.comment,
sum(case when b.name='Car' then b.amount end) as Car_Amount,
sum(case when b.name='Car' then b.factor end) as Car_Factor,
sum(case when b.name='Bike' then b.amount end) as Bike_Amount,
sum(case when b.name='Bike' then b.factor end) as Bike_Factor
from a left join b on a.id=b.id_a
group by a.id, a.value, a.comment;

关于sql - 如何将 sql 结果条目旋转到列中(透视),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39769865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com