Mysql 中的case when then else end的用法

面试题:

有表A,结构如下:

p_ID(产品编号) p_NUM(产品库存量) s_id(仓库编号)
1 10 01
1 12 02
2 8 01
3 11 01
3 8 03

请用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代替。

SQL如下:

 SELECT
            p_id,
            SUM(
                CASE          ----如果
                WHEN s_id = 1 THEN        ----当仓库为1是就输出仓库1中的库存量
                    p_num
                ELSE              ----其他的就用0代替
                    0
                END                ----结束
            )AS s1_id,
            SUM(
                CASE
                WHEN s_id = 2 THEN
                    p_num
                ELSE
                    0
                END
            )AS s2_id,
            SUM(
                CASE
                WHEN s_id = 3 THEN
                    p_num
                ELSE
                    0
                END
            )AS s3_id
        FROM
            A
        GROUP BY
            p_id

Mysql 中的case when then else end的用法_第1张图片 

 这里用到了mysql中的case when  then else end.

你可能感兴趣的:(mysql)