0

以下のクエリを実行しました

SELECT 
    SUBSTRING_INDEX(prim_key ,":" , 1) prim_key, 
    SUBSTRING_INDEX(prim_key ,":" , -1) urid, 
    CASE WHEN basicname = 'Q914'  THEN 'SHC'
         WHEN basicname = 'QP913'  THEN 'PHC'
         WHEN basicname = 'QC1214'  THEN 'CHC'
         WHEN basicname = 'QD1014'  THEN 'DH/SDH'
         ELSE 'UNKOWN' 
    END AS Status 
FROM facility_data 
WHERE 1 = 1
    AND basicname in ( 'Q914'  , 'QP913' , 'QC1214' , 'QD1014' ) 
    and prim_key like  '3_10_%' 
ORDER BY  prim_key ASC

少し変更する必要があります。 SHC 、 DH 、 PHC 、および CHC の合計数を表示したいです。

shc、dh、phc、chcの合計数を表示するにはどうすればよいか教えてください。

4

2 に答える 2

0

カウントだけで1行を取得するのに十分な場合は、内部SUMのステートメントで使用できます(これを使用します)。IFwhere

 SELECT
     sum(if(basicname = 'Q914',1,0)) as SHC,
     sum(if(basicname = 'QP913',1,0)) as PHC,
     sum(if(basicname = 'QC1214',1,0)) as CHC,
     sum(if(basicname = 'QD1014',1,0)) as DH
 FROM facility_data 
 WHERE
     basicname in ( 'Q914'  , 'QP913' , 'QC1214' , 'QD1014' ) 
     and prim_key like  '3_10_%' 
 ORDER BY  prim_key ASC

または GROUP BY、結果として複数の行が必要な場合は a を使用します (必要Using temporary; Using filesort):

 SELECT
     CASE WHEN basicname = 'Q914'  THEN 'SHC'
          WHEN basicname = 'QP913'  THEN 'PHC'
          WHEN basicname = 'QC1214'  THEN 'CHC'
          WHEN basicname = 'QD1014'  THEN 'DH/SDH'
          ELSE 'UNKOWN' 
     END AS Status,
     COUNT(*) as `count`
 FROM facility_data 
 WHERE
     basicname in ( 'Q914'  , 'QP913' , 'QC1214' , 'QD1014' ) 
     and prim_key like  '3_10_%' 
 GROUP BY basicname
 ORDER BY  prim_key ASC
于 2013-09-13T10:26:23.747 に答える