SQL PIVOT查询,基于值的列

时间:2016-04-22 07:50:46

标签: sql

我被困住了,似乎没有找到合适的foo在Google上搜索答案。

我要做的是从列中获取值,该列基于另一列的值:

我有两张桌子:

pID | name | period
 0    abc      1
 1    def      2
 2    ghi      3

pID | p1 | p2 | p3
 0    10   20   30
 1    40   50   60
 2    70   80   90

我想做一个查询,显示所有pID,它们的名称,句点以及该期间的值。输出应为:

pID | name | period | NewVal
 0    abc      1        10
 1    def      2        50
 2    ghi      3        90

我希望很清楚我正在尝试做什么!

谢谢* 1000

2 个答案:

答案 0 :(得分:0)

对于静态定义的列,您可以使用如下查询:

SELECT t1.pID, t1.name, t1.period,
       CASE t1.period
          WHEN 1 THEN t2.p1 
          WHEN 2 THEN t2.p2
          WHEN 3 THEN t2.p3
       END AS NewVal
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON t1.pID = t2.PID

Demo here

答案 1 :(得分:0)

好吧,如果句点数量固定,那么您可以尝试使用CASE

select t1.pID, t1.name, t1.period,
 CASE t1.period
  WHEN 1 THEN t2.p1 
  WHEN 2 THEN t2.p2
  WHEN 3 THEN t2.p3
 END as NewVal
from t1
inner join t2 on t2.pID = t1.pID;