【问题标题】:Using SUM and CASE in Oracle SQL在 Oracle SQL 中使用 SUM 和 CASE
【发布时间】:2020-10-22 04:23:43
【问题描述】:

我构建了一个查询,以从 2 个表中获取按日期列分组的计数。

select count(*),TO_CHAR(CREATION_DATE,'DD/Mon/YY HH') as Date_TIME,'Table_1' as TABLE_NAME
from TABLE 1
where CREATION_DATE > TO_DATE('01/10/2020','DD/MM/YYYY')
group by TO_CHAR(CREATION_DATE,'DD/Mon/YY HH')
UNION
select count(*),TO_CHAR(CREATION_DATE,'DD/Mon/YY HH') as Date_TIME , 'Table_2' as TABLE_NAME
from TABLE 2
where CREATION_DATE > TO_DATE('01/10/2020','DD/MM/YYYY')
group by TO_CHAR(CREATION_DATE,'DD/Mon/YY HH')

我想从两个表中获取结果,因此我使用了UNION。由于我想要按TO_CHAR(CREATION_DATE, 'DD/Mon/YY HH') 分组的每小时计数分解

输出是这样的:

443 14/Oct/20 04    Table_1
861 14/Oct/20 04    Table_2
371 14/Oct/20 05    Table_1
323 14/Oct/20 06    Table_2

如您所见,我希望输出 counts 在两个表中按 小时 汇总,并给出如下结果这个:

1304 14/Oct/20 04   Table_1
371  14/Oct/20 05   Table_1
323  14/Oct/20 06   Table_2

我可以做到这一点,但这并不实用。我正在考虑 Oracle 中的 CASE 语句,但从未真正实现过。

数据库:甲骨文 编辑:Toad for Oracle

【问题讨论】:

    标签: sql database oracle case toad


    【解决方案1】:

    使用您当前的查询作为最终结果的数据源:

      SELECT SUM (cnt) sum_cnt, date_time, MAX (table_name) table_name
        FROM (  SELECT COUNT (*) cnt,
                       TO_CHAR (creation_date, 'DD/Mon/YY HH') AS date_time,
                       'Table_1' AS table_name
                  FROM TABLE_1
                 WHERE creation_date > TO_DATE ('01/10/2020', 'DD/MM/YYYY')
              GROUP BY TO_CHAR (creation_date, 'DD/Mon/YY HH')
              UNION
                SELECT COUNT (*),
                       TO_CHAR (creation_date, 'DD/Mon/YY HH') AS date_time,
                       'Table_2' AS table_name
                  FROM TABLE_2
                 WHERE creation_date > TO_DATE ('01/10/2020', 'DD/MM/YYYY')
              GROUP BY TO_CHAR (creation_date, 'DD/Mon/YY HH'))
    GROUP BY date_time
    ORDER BY date_time, table_name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多