Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何组合这两个select语句_Mysql - Fatal编程技术网

Mysql 如何组合这两个select语句

Mysql 如何组合这两个select语句,mysql,Mysql,我想把这两种说法结合起来,但似乎做不好 我需要总共3列。一个用于合计、月份和损失 这是我到目前为止所拥有的 SELECT Count(patient1.patient_id) AS total FROM patient AS total; SELECT Count(patient2.patient_id) AS losses, patient2.mo AS `month` FROM patient AS patient2 WHERE patient1.rx_exp BETWEEN '2010-1

我想把这两种说法结合起来,但似乎做不好

我需要总共3列。一个用于合计、月份和损失

这是我到目前为止所拥有的

SELECT Count(patient1.patient_id) AS total FROM patient AS total;
SELECT Count(patient2.patient_id) AS losses, patient2.mo AS `month`
FROM patient AS patient2
WHERE patient1.rx_exp BETWEEN '2010-10-01' AND '2010-11-01';
编辑我需要将所有三列放在一行上。

选择
SELECT 
    Count(patient_id) AS total,
    Count(case when rx_exp >= '2010-10-01' 
               AND rx_exp < '2010-11-01' then 1 end) AS losses,
    'October' AS `month`
FROM patient;
将(患者id)计入总数, 计数(rx_exp>='2010-10-01'时的情况) 和rx_exp<'2010-11-01'然后1结束)作为损失, “十月”作为“月份”` 来自患者;
你可以用这个月,但可能没有意义

MAX(case when rx_exp >= '2010-10-01' 
     AND rx_exp < '2010-11-01' then patient2.mo end) AS `month`
MAX(rx\u exp>='2010-10-01'时的情况)
和rx_exp<'2010-11-01'然后patient2.mo结束)作为'month`

您的第一个查询没有日期限制。这就是你想要的吗?所以你会把所有时间的病人总数和每月的数据混在一起?我想展示的是对病人未来一个月的损失的预测。我想向他们显示患者总数,然后计算第二个select查询中的损失。如果
PATIENT.mo
的值表示月份,为什么要检查
PATIENT.rx\u exp
?您的查询给出了正确的总数。谢谢你,马丁!Martin,“1”在stmt的情况下做什么?
COUNT
返回传递给它的
非空值的数目。如果一行在您的目标月份,则
CASE
语句将计算为
1
,否则为
NULL
1
本身并不重要。您可以使用
0
X
patient\u id
或任何
非空值来获得相同的效果。Martin,感谢您的解释和帮助。关于月份,我使用其他函数来确定下一个月,为了简洁起见,我在示例中省略了它们。