【问题标题】:Sql Data ManipulationSql数据操作
【发布时间】:2012-06-28 07:54:24
【问题描述】:

我在表格中有以下方式的数据

表名:历史

page_url       verified         day
------------------------------------------
some_url1      true             2012-06-25
some_url2      true             2012-06-24
some_url1      false            2012-06-25
some_url2      false            2012-06-24

这就像在另一个表中使用日期字段值作为字段名称

我需要以下方式的输出:

page_url           2012-06-25         2012-06-24
------------------------------------------------
some_url1          true               false  
some_url2          true               false  

是否可以使用 pl/sql 或存储过程??

【问题讨论】:

  • 您想要一个包含完全这些列的结果集吗?还是您希望列由数据确定? (那么,您现在可能有 3 列,或者稍后插入更多数据时有 10 列?)
  • @Dems,我希望列由数据确定。该表包含大约 90 天的数据。
  • @SaurabhSazena - 然后您需要编写 PLSQL 来编写 SQL 查询(使用 MahmoudGamal 的答案作为模板)并执行它。 PLSQL不允许结果集有未知数量的列。

标签: sql plsql pivot plsqldeveloper


【解决方案1】:

您在这里寻找的是旋转您的列。如果这些列在您的示例数据中受到限制,那么您可以使用简单的CASE 语句来执行此操作,如下所示:

SELECT page_url, 
   MAX(CASE WHEN day = '2012-06-25' THEN verified END) as '2012-06-25',
   MAX(CASE WHEN day = '2012-06-24' THEN verified END) as '2012-06-24'
FROM tableName
GROUP BY page_url

【讨论】:

    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2016-05-08
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    相关资源
    最近更新 更多