【问题标题】:I want sum also to be included at the bottom of the result set based on the below sql query我希望总和也包含在基于以下 sql 查询的结果集的底部
【发布时间】:2023-01-12 17:59:21
【问题描述】:

查询如下:

  SELECT  tc.CATEGORY_NAME,
  COUNT(dc.CONSULT_ID) AS "TEST_COUNT"
  FROM DOCTOR_CONSULT dc 
  INNER JOIN CONSULT_LABTEST cl 
  on(dc.CONSULT_ID=cl.CONSULT_ID)
  INNER JOIN TEST_SETUP ts
  on(cl.LABTEST_ID=ts.TEST_ID)
  INNER JOIN TEST_CATEGORY tc
  ON (ts.CATEGORY_ID=tc.CATEGORY_ID)
 INNER JOIN OFFICE_DETAILS od 
 on(dc.OFFICE_ID=od.OFFICE_ID)  
 WHERE dc.CONSULT_DATE BETWEEN CURRENT_DATE AND CURRENT_DATE
 AND ts.ACTIVE_STATUS ='Y'
 AND tc.ACTIVE_STATUS ='Y'
 AND od.ACTIVE_STATUS ='Y'
 AND ts.LAB_TYPE IN('L')
 GROUP BY tc.CATEGORY_NAME;

结果如下:

CATEGORY_NAME   TEST_COUNT
Biochemistry        7
Hematology          6
Hormones            1
Clinical Pathology  1

我需要什么

CATEGORY_NAME   TEST_COUNT
Biochemistry        7
Hematology          6
Hormones            1
Clinical Pathology  1
SUM                 15

上面的SQL代码需要修改什么

【问题讨论】:

  • 不确定,如果 SAP 支持 GROUP BY 扩展,但您可以查看 ROLLUP、GROUPING SETS

标签: sql sap database-administration hana


【解决方案1】:

联盟

并求和为 SUM 之前的选择

【讨论】:

    【解决方案2】:

    您可以添加一个没有组的 UNION 来获得您想要的总数:

    SELECT  
      tc.CATEGORY_NAME,
      COUNT(dc.CONSULT_ID) AS "TEST_COUNT"
    FROM DOCTOR_CONSULT dc 
    INNER JOIN CONSULT_LABTEST cl 
    on(dc.CONSULT_ID=cl.CONSULT_ID)
    INNER JOIN TEST_SETUP ts
    on(cl.LABTEST_ID=ts.TEST_ID)
    INNER JOIN TEST_CATEGORY tc
    ON (ts.CATEGORY_ID=tc.CATEGORY_ID)
    INNER JOIN OFFICE_DETAILS od 
    on(dc.OFFICE_ID=od.OFFICE_ID)  
    WHERE dc.CONSULT_DATE BETWEEN CURRENT_DATE AND CURRENT_DATE
      AND ts.ACTIVE_STATUS ='Y'
      AND tc.ACTIVE_STATUS ='Y'
      AND od.ACTIVE_STATUS ='Y'
      AND ts.LAB_TYPE IN('L')
    GROUP BY tc.CATEGORY_NAME
    
    UNION
    
    SELECT 
      'SUM' AS CATEGORY_NAME, 
      COUNT(*) AS TEST_COUNT
    FROM DOCTOR_CONSULT dc 
    INNER JOIN CONSULT_LABTEST cl 
    on(dc.CONSULT_ID=cl.CONSULT_ID)
    INNER JOIN TEST_SETUP ts
    on(cl.LABTEST_ID=ts.TEST_ID)
    INNER JOIN TEST_CATEGORY tc
    ON (ts.CATEGORY_ID=tc.CATEGORY_ID)
    INNER JOIN OFFICE_DETAILS od 
    on(dc.OFFICE_ID=od.OFFICE_ID)  
    WHERE dc.CONSULT_DATE BETWEEN CURRENT_DATE AND CURRENT_DATE
      AND ts.ACTIVE_STATUS ='Y'
      AND tc.ACTIVE_STATUS ='Y'
      AND od.ACTIVE_STATUS ='Y'
      AND ts.LAB_TYPE IN('L')
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      相关资源
      最近更新 更多