为了账号安全,请及时绑定邮箱和手机立即绑定

多个查询同一表但列不同

多个查询同一表但列不同

慕雪6442864 2019-07-11 12:42:11
多个查询同一表但列不同我试图从两个不同的表中得到更多的汇总结果的列SET @start_res = 20150301;SET @finish_res= 20150501;SET @finish_check= 20150801;SET @start_check= 20150301;SET @daily_hos= 3;SELECT* from    ( SELECT COUNT(DAY_IN) AS arr FROM t_hospital WHERE DAY_IN between  @start_check and @finish_check and RES_DATE between @start_res and     @finish_res  and ID_daily_hos =@daily_hos group by DAY_IN  )e,      (SELECT COUNT(PAT_STATUS) AS ONG1 FROM t_hospital WHERE PAT_STATUS  like '%ong%' and  DAY_IN between @start_check and @finish_check       and RES_DATE between @start_res and @finish_res  and ID_daily_hos =@daily_hos group by DAY_IN ) a,         (SELECT COUNT(PAT_STATUS) AS RTED FROM t_hospital WHERE PAT_STATUS  like '%rtde%'and  DAY_IN between  @start_check and @finish         _check and RES_DATE between @start_res and @finish_res  and ID_daily_hos =@daily_hos group by DAY_IN  )b,            (SELECT COUNT(PAT_STATUS) AS POLI FROM t_hospital WHERE PAT_STATUS  like '%pol%'and DAY_IN between @start_check and @finish_            check and RES_DATE between @start_res and @finish_res  and ID_daily_hos =@daily_hos group by DAY_IN   )c,               (SELECT COUNT(PAT_STATUS) AS para FROM t_hospital WHERE PAT_STATUS  like '%para%' and  DAY_IN between @start_check and                @finish_check and RES_DATE between @start_res and @finish_res  and ID_daily_hos =@daily_hos group by DAY_IN  )d当然,它不能工作,只有第一个显示的列(Arr)工作,而其他列显示一个错误的输出。我哪里错了?
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

这是一个非常常见的模式:

SELECT DAY_IN, COUNT(*) AS arr,
        SUM(IF(PAT_STATUS  like '%ong%', 1, 0)) AS ONG1,
        SUM(IF(PAT_STATUS  like '%rtde%', 1, 0)) AS RTED,
        SUM(IF(PAT_STATUS  like '%pol%', 1, 0)) AS POL1,
        SUM(IF(PAT_STATUS  like '%para%', 1, 0)) AS paraFROM t_hospital 
WHERE DAY_IN between @start_check and @finish_check 
    and RES_DATE between @start_res and @finish_res  
    and ID_daily_hos =@daily_hosGROUP BY DAY_IN


查看完整回答
反对 回复 2019-07-11
?
交互式爱情

TA贡献1712条经验 获得超3个赞

试试这个:-


SET @start_res = 20150301;

SET @finish_res= 20150501;

SET @finish_check= 20150801;

SET @start_check= 20150301;

SET @daily_hos= 3;


SELECT 


(SELECT COUNT(DAY_IN) AS arr FROM t_hospital WHERE 

DAY_IN between  @start_check and @finish_check and 

RES_DATE between @start_res and @finish_res and 

ID_daily_hos =@daily_hos) e,


(SELECT COUNT(PAT_STATUS) AS ONG1 FROM t_hospital WHERE 

PAT_STATUS  like '%ong%' and  

DAY_IN between @start_check and @finish_check and 

RES_DATE between @start_res and @finish_res  and 

ID_daily_hos =@daily_hos) a,


(SELECT COUNT(PAT_STATUS) AS RTED FROM t_hospital WHERE 

PAT_STATUS  like '%rtde%' and  

DAY_IN between  @start_check and @finish_check and 

RES_DATE between @start_res and @finish_res  and 

ID_daily_hos =@daily_hos)b,


(SELECT COUNT(PAT_STATUS) AS POLI FROM t_hospital WHERE 

PAT_STATUS  like '%pol%' and 

DAY_IN between @start_check and @finish_check and 

RES_DATE between @start_res and @finish_res  and 

ID_daily_hos =@daily_hos) c,


(SELECT COUNT(PAT_STATUS) AS para FROM t_hospital WHERE 

PAT_STATUS  like '%para%' and  

DAY_IN between @start_check and @finish_check and 

RES_DATE between @start_res and @finish_res  and 

ID_daily_hos =@daily_hos) d

您的问题提到了连接两个表,但似乎只有t_hospital有疑问。您可能需要使用有关另一个表的信息更新您的问题。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 546 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信