【问题标题】:How to filter columns in addition to summing up in sql developer?sql developer中除了求和之外,如何过滤列?
【发布时间】:2021-04-11 02:34:50
【问题描述】:

我编写了这段代码来获取不同状态的风险数量,但我不希望结果出现在多行中,我只是添加了C_INSERTTIME 字段以便稍后过滤时间。我怎样才能在一行中得到结果?

SELECT rsk.C_INSERTTIME inserttime,
       SUM(CASE 
                WHEN rskst.c_code = 'HSE_RISK_STATUS_DRAFT' THEN 1 
                ELSE 0 
           END) AS drafted_risk,
       SUM(CASE 
                WHEN rskst.c_code <> 'HSE_RISK_STATUS_DRAFT' THEN 1
                ELSE 0 
           END) AS analyzed_risk,
       SUM(CASE 
                WHEN rskdecsass.c_code = 'HSE_DECISION_ASSESSMENT_APPROVED' THEN 1 
                ELSE 0 
           END) AS approved_assessed_risks       
  FROM T_HSE_RISK rsk
       LEFT JOIN t_hse_category_element rskst ON rskst.c_id = rsk.f_category_element_id_rsk_stts
       LEFT JOIN t_hse_category_element rskdecsass ON rskdecsass.c_id = rsk.F_CTGRY_ELMNT_ID_DCSN_ASSSSMNT 
WHERE rsk.C_INSERTTIME >= TIMESTAMP '2000-01-01 00:00:00'
GROUP BY rsk.C_INSERTTIME

【问题讨论】:

  • 这是什么意思? “以便稍后过滤时间”。样本数据和期望的结果会有所帮助。

标签: sql datetime sum case filtering


【解决方案1】:

您应该删除GROUP BY 并在C_inserttime 上使用聚合,如下所示:

SELECT min(rsk.C_INSERTTIME) inserttime, -- or max
       SUM(CASE 
                WHEN rskst.c_code = 'HSE_RISK_STATUS_DRAFT' THEN 1 
                ELSE 0 
           END) AS drafted_risk,
       SUM(CASE 
                WHEN rskst.c_code <> 'HSE_RISK_STATUS_DRAFT' THEN 1
                ELSE 0 
           END) AS analyzed_risk,
       SUM(CASE 
                WHEN rskdecsass.c_code = 'HSE_DECISION_ASSESSMENT_APPROVED' THEN 1 
                ELSE 0 
           END) AS approved_assessed_risks       
  FROM T_HSE_RISK rsk
       LEFT JOIN t_hse_category_element rskst ON rskst.c_id = rsk.f_category_element_id_rsk_stts
       LEFT JOIN t_hse_category_element rskdecsass ON rskdecsass.c_id = rsk.F_CTGRY_ELMNT_ID_DCSN_ASSSSMNT 
WHERE rsk.C_INSERTTIME >= TIMESTAMP '2000-01-01 00:00:00'
-- GROUP BY rsk.C_INSERTTIME -- removed this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2016-10-25
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多