一道高难度的sql面试题目
昨天去海淀区知春路上的一家公司面试。有下面一道题目,好像在哪里见过,不过我没有做出来,偷偷把题目抄了下来。请大家帮我看一下,谢谢了!
有表A,结构如下:
A: p_ID p_Num s_id
1 10 01
1 12 02
2 8 01
3 11 01
3 8 03
其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。请用SQL语句实现将上表中的数据合并,合并后的数据为:
p_ID s1_id s2_id s3_id
1 10 12 0
2 8 0 0
3 11 0 8
其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那么就是0代替。
------解决方案--------------------A: p_ID p_Num s_id
1 10 01
1 12 02
2 8 01
3 11 01
3 8 03
--------------
select p_id, s1_id =case when s_id= '01 ' then p_num else 0 end,
s2_id =case when s_id= '02 ' then p_uum else 0 end,