【问题标题】:Show multiple rows from single row data based on column values根据列值显示单行数据中的多行
【发布时间】:2015-04-16 07:18:39
【问题描述】:

下面有数据

ID         DATE     COMPLIANCE ISBREAKREDUCED ISSECONDMEALBREAKREDUCED
1208240    4/12/2015    2              1                1

如果值为 1,我如何在基本查询中使用它来显示 ISBREAKREDUCED 和 ISSECONDMEALBREAKREDUCED 列的不同行。 此表连接条件基于 id 和 date 字段,这就是它选择单行的原因。如何在输出中将此行拆分为多行?

【问题讨论】:

  • 所需的输出不清楚。你想反轴吗?或者,您是否只想有单列但有 2 行?请编辑您的问题并添加您想要的输出。

标签: sql oracle11g


【解决方案1】:

我认为您正在寻找一个典型的 UNPIVOT 查询。

你可以这样做:

SQL> WITH DATA AS(
  2  SELECT 1208240 ID, 1 ISBREAKREDUCED, 1 ISSECONDMEALBREAKREDUCED FROM dual UNION ALL
  3  SELECT 1208241 ID, 2 ISBREAKREDUCED, 3 ISSECONDMEALBREAKREDUCED FROM dual
  4  )
  5  SELECT *
  6  FROM
  7    (SELECT                                                         *
  8    FROM DATA UNPIVOT (ISSECONDMEALBREAKREDUCED FOR ISBREAKREDUCED IN (ISBREAKREDUCED AS 1, ISSECONDMEALBREAKREDUCED AS 1))
  9    )
 10  WHERE ISBREAKREDUCED         =1
 11  AND ISSECONDMEALBREAKREDUCED =1
 12  /

        ID ISBREAKREDUCED ISSECONDMEALBREAKREDUCED
---------- -------------- ------------------------
   1208240              1                        1
   1208240              1                        1

SQL>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2012-10-28
    • 1970-01-01
    相关资源
    最近更新 更多