限定SQL select语句中的列

时间:2018-06-04 20:30:35

标签: sql

我正在寻找从多个表中提取的查询。大多数都相当简单,我可以直接从表中提取一个值,但有一个表被转动,所以我想要的值取决于另一列中的值。

表格如下所示:

ID   Condition   Value
1     Stage1      6
2     Stage2      9
3     Stage3      5
4     Stage4      2

所以我想写一个查询,通过告诉表中哪个条件基本上“限定”我想要的值。

我的SQL示例:

Select Attribute1, Stage1Value, Stage2Value, Stage3Value
From attribute, stage
where attribute = project1

所以我不能只是拉“值”列,因为它需要知道查询中的哪个阶段。

我试图提取30列 - 其中13列属于此类别。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

所以,你想要条件聚合:

select a.<col>, 
       sum(case when s.Condition = 'Stage1' then s.value else 0 end),
       . . .
       sum(case when s.Condition = 'Stage4' then s.value else 0 end)
from attribute a inner join 
     stage s
     on s.<col> = a.<col>
group by a.<col>