日期:2014-05-18  浏览次数:20488 次

一道高难度的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,