2016-12-20 26 views
0

我有这个疑问MySQL如何从表中进行SELECT SUM和从其他SEARCH中进行乘法?

SELECT ps_ur AS UR, COUNT(ps_ur) AS Value 
FROM patient_services 
GROUP BY UR 
UNION ALL 
SELECT eng_ur AS UR, COUNT(eng_ur) AS Value 
FROM engagements 
WHERE LENGTH(eng_ur)>0 
GROUP BY UR 

结果:

UR  Value 
002035 3 
002400 2 
005441 4 
... 

现在我需要从患者表男/女来计算和数值乘以

喜欢这一点,但右侧

SELECT 
SUM(CASE WHEN patient_gender = 'Male' THEN 1 ELSE 0 END) Male, 
SUM(CASE WHEN patient_gender = 'Female' THEN 1 ELSE 0 END) Female 
FROM patients WHERE patient_ur 

如何做到这一点?

+0

您的试验出了什么问题?你想要得到什么? – Rahul

+0

@Rahul我不知道如何搜索** patient_ur **从第一个查询** UR **和乘以**值**和所有在一个查询 – user3315525

+0

@Rahul我试过这个'SELECT SUM( CASE当patient_gender ='男'然后1 ELSE 0结束)男性,SUM(案例时间patient_gender ='女性'然后1 ELSE 0结束)女病人来自患者WHERE patient_ur调用foreach( SELECT ps_ur AS UR来自patient_services联盟所有选择eng_ur从约定AS UR WHERE LENGTH(eng_ur)> 0 )'但这只给我带来独特的结果,我需要每个 – user3315525

回答

1

在这种情况下,您想要将第一个换成内部查询。像下面的东西。现在您可以访问Value字段xxx.Value并且乘以或做任何需要的处理。不确定你想要乘数的位置,因此无法在建议的查询中反映出来。可能这是你留下的功课。

SELECT 
SUM(CASE WHEN patient_gender = 'Male' THEN 1 ELSE 0 END) Male, 
SUM(CASE WHEN patient_gender = 'Female' THEN 1 ELSE 0 END) Female 
FROM patients JOIN (
SELECT ps_ur AS UR, COUNT(ps_ur) AS `Value` 
FROM patient_services 
GROUP BY UR 
UNION ALL 
SELECT eng_ur AS UR, COUNT(eng_ur) AS `Value` 
FROM engagements 
WHERE LENGTH(eng_ur)>0 
GROUP BY UR) xxx ON patients.patient_ur = xxx.UR 
+0

谢谢! SUM(case when patient_gender ='male'THEN 1 * xxx.VALUE ELSE 0 END)' – user3315525

相关问题