error : #1242 - Subquery returns more than 1 row

前端 未结 4 616
夕颜
夕颜 2020-12-11 11:39

I got an error: #1242 - Subquery returns more than 1 row when i run this sql.

CREATE VIEW test 
AS 
  SELECT cc_name, 
         COUNT() AS total, 
         (         


        
4条回答
  •  悲哀的现实
    2020-12-11 12:13

    Your subqueries return more than 1 row. I think you you need something like :

     SELECT COUNT(*) AS total, 
     COUNT(CASE WHEN respatient_id > 0 THEN 1 END) AS occupied_beds,
     COUNT(CASE WHEN respatient_id IS NULL THEN 1 END) AS free_beds          
     FROM   bed 
     GROUP  BY cc_name
    

    You can also try to use WITH ROLLUP + pivoting (mostly for learning purposes, it's a much longer query ) :

    SELECT cc_name, 
    MAX(CASE 
     WHEN num_1 = 1 THEN tot_num END) AS free_beds,
    
    MAX(CASE 
     WHEN num_1 = 2 THEN tot_num END) AS occupied_beds,
    
    MAX(CASE 
     WHEN num_1 = IS NULL THEN tot_num END) AS total
    
    FROM
    (SELECT cc_name, CASE 
    WHEN respatient_id > 0 THEN 1
    WHEN respatient_id IS NULL THEN 2
    ELSE 3 END as num_1,
    COUNT(*) as tot_num
    FROM  bed
    WHERE 
    CASE 
    WHEN respatient_id > 0 THEN 1
    WHEN respatient_id IS NULL THEN 2
    ELSE 3 END != 3
    GROUP BY cc_name,
    num_1 WITH ROLLUP)A
    GROUP BY cc_name
    

提交回复
热议问题