繁体   English   中英

如何将 sql 列值汇总到一个单独的列中? 在这里总结 NPM,NPF,NPC 到一个新的专栏

[英]how to sum sql column value into a separate column ? here to sum up NPM,NPF,NPC to a new column

SELECT DATE_FORMAT(e.`date_created`,'%d-%b-%Y') AS DATE,
       SUM(CASE WHEN ps.Gender = 'M'
           AND e.encounter_type<='6'
           AND DATEDIFF(CURDATE(), ps.birthdate)>4381 THEN 1 ELSE 0 END) AS **NPM**,
       SUM(CASE WHEN ps.Gender = 'F'
                 AND e.encounter_type<='6'
                 AND DATEDIFF(CURDATE(), ps.birthdate)>4381 
                THEN 1 ELSE 0 END) AS **NPF**,
       SUM(CASE WHEN DATEDIFF(CURDATE(), ps.birthdate)<=4380
                 AND e.encounter_type<='6' 
                THEN 1 ELSE 0 END) AS **NPC**,
SUM(CASE WHEN ps.Gender = 'M'
    AND e.encounter_type>'6'
    AND DATEDIFF(CURDATE(), ps.birthdate)>4381 THEN 1 ELSE 0 END) AS OPM,
SUM(CASE WHEN ps.Gender = 'F'
    AND e.encounter_type>'6'
    AND DATEDIFF(CURDATE(), ps.birthdate)>4381 THEN 1 ELSE 0 END) AS OPF,
SUM(CASE WHEN DATEDIFF(CURDATE(), ps.birthdate)<=4380
    AND e.encounter_type>'6' THEN 1 ELSE 0 END) AS OPC,
COUNT(e.`patient_id`) AS total
FROM patient_search ps
LEFT JOIN
(SELECT e.`encounter_id`,
        e.`encounter_type`,
        e.`patient_id`,
        e.`date_created`,
        e.`creator`
 FROM encounter AS e
 GROUP BY e.`creator`,
          e.`date_created`) AS e ON e.patient_id=ps.patient_id
LEFT JOIN
(SELECT oo.`concept_id`,
        oo.`value_text`,
        oo.`encounter_id`
 FROM obs AS oo
 WHERE oo.`concept_id`='4086')AS eId ON e.`encounter_id`=eId.encounter_id
GROUP BY DATE_FORMAT(e.`date_created`,'%Y-%m-%d')

正如您所说,您的查询正在运行,您只需要将其包装为子查询并将这三列求和如下

旁注: DATE是一个保留字,所以你需要反引号。

SELECT `DATE`,
        NPM+NPF+NPC AS SUM_TREE_COLS,
        OPM,
        OPF,
        OPC,
        total
 FROM (
   SELECT DATE_FORMAT(e.`date_created`,'%d-%b-%Y') AS `DATE`,
          SUM(CASE WHEN ps.Gender = 'M'
              AND e.encounter_type<='6'
              AND DATEDIFF(CURDATE(), ps.birthdate)>4381 THEN 1 ELSE 0 END) AS NPM,
          SUM(CASE WHEN ps.Gender = 'F'
                    AND e.encounter_type<='6'
                    AND DATEDIFF(CURDATE(), ps.birthdate)>4381 
                   THEN 1 ELSE 0 END) AS NPF,
          SUM(CASE WHEN DATEDIFF(CURDATE(), ps.birthdate)<=4380
                    AND e.encounter_type<='6' 
                   THEN 1 ELSE 0 END) AS NPC,
   SUM(CASE WHEN ps.Gender = 'M'
       AND e.encounter_type>'6'
       AND DATEDIFF(CURDATE(), ps.birthdate)>4381 THEN 1 ELSE 0 END) AS OPM,
   SUM(CASE WHEN ps.Gender = 'F'
       AND e.encounter_type>'6'
       AND DATEDIFF(CURDATE(), ps.birthdate)>4381 THEN 1 ELSE 0 END) AS OPF,
   SUM(CASE WHEN DATEDIFF(CURDATE(), ps.birthdate)<=4380
       AND e.encounter_type>'6' THEN 1 ELSE 0 END) AS OPC,
   COUNT(e.`patient_id`) AS total
   FROM patient_search ps
   LEFT JOIN
   (SELECT e.`encounter_id`,
           e.`encounter_type`,
           e.`patient_id`,
           e.`date_created`,
           e.`creator`
    FROM encounter AS e
    GROUP BY e.`creator`,
             e.`date_created`) AS e ON e.patient_id=ps.patient_id
   LEFT JOIN
   (SELECT oo.`concept_id`,
           oo.`value_text`,
           oo.`encounter_id`
    FROM obs AS oo
    WHERE oo.`concept_id`='4086')AS eId ON e.`encounter_id`=eId.encounter_id
   GROUP BY DATE_FORMAT(e.`date_created`,'%Y-%m-%d')
  ) BIGTAB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM