zoukankan      html  css  js  c++  java
  • 面试题:oracle数据库行转列的问题

    今天我一个学弟问了一个面试题:

    有表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代替。

    答案是

    select p_id,
    sum(case when s_id = "1" then p_num else 0 end) s1_id,
    sum(case when s_id = "2" then p_num else 0 end) s2_id,
    sum(case when s_id = "3" then p_num else 0 end) s3_id
    from A group by p_id

    这其实是一个oracle的行转列的题目,以前做过,刚才问到我的时候,突然没反应过来,现在做个随笔,以便自己记住。

    行转列  用sum函数   格式是sum(case when 条件 then 统计的列 else ... end ) 转完之后的列名

  • 相关阅读:
    springboot(6)-热部署
    springboot(5)-文件上传
    ubuntu修改tomcat使用的jdk
    jstack使用
    HeapAnalyzer如何使用
    查看linux下tomcat使用的jdk版本
    ubuntu-tomcat安装目录
    vi命令
    211java-jdk安装记录
    linux的java安装目录
  • 原文地址:https://www.cnblogs.com/zhyStudy/p/9112021.html
Copyright © 2011-2022 走看看