SQL PIVOT查询,基于值的列
问题描述:
我被卡住了,似乎找不到在Google上搜索答案的正确foo。SQL PIVOT查询,基于值的列
我试图做的是得到一个列的值,列是基于从另一列中的值:
我有两个表:
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
答
好吧,如果周期数是固定的,那么你可以尝试使用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;
+0
谢谢!奇迹般有效! – Olle
您正在使用哪些DBMS? –
表1中第3列(期间)的值是否固定,即是否知道它具有的值范围?此外,表2中的列P1,P2,P3的数量也是固定的?或者这是根据期数动态生成的东西? –