查询1
SELECT
Admin_Services.S_Name, SUM(Patient_Services.Amount) AS Total
FROM
Patient_Services
INNER JOIN
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
WHERE
Admin_Services.S_ID = 1606 OR
Admin_Services.S_ID = 28451 OR
Admin_Services.S_ID = 28449
AND Patient_Services.sdatetime = getdate()
GROUP BY
Admin_Services.S_Name
查询1的结果:
S_Name | Total
Anesthesia Charges | 20000
Consultant Fee | 50200
Operation Charges | 31000
查询2
SELECT
'Pathology' as S_Name, SUM(Patient_Services.Amount) AS Total
FROM
Patient_Services
INNER JOIN
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
WHERE
Patient_Services.TB_ID IS NOT NULL
AND Patient_Services.sdatetime = getdate()
查询2的结果
S_Name | Total
Pathology | 109576
我想要的结果如下:
S_Name | Total
Anesthesia Charges | 20000
Consultant Fee | 50200
Operation Charges | 31000
Pathology | 109576
请有人帮助我获得所需的结果。
答案 0 :(得分:1)
快速更改以获得所需的结果是使用UNION ALL来组合两个查询的结果
-- query 1
SELECT Admin_Services.S_Name,Sum(Patient_Services.Amount) as Total
FROM Patient_Services INNER JOIN
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
where Admin_Services.S_ID = 1606 OR Admin_Services.S_ID = 28451 OR Admin_Services.S_ID = 28449 And Patient_Services.sdatetime = getdate()
Group By Admin_Services.S_Name
UNION ALL
-- query 2
SELECT 'Pathology' as S_Name, Sum(Patient_Services.Amount) as Total
FROM Patient_Services INNER JOIN
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
where Patient_Services.TB_ID is not null And Patient_Services.sdatetime = getdate()
答案 1 :(得分:0)
您需要使用GROUP BY WITH ROLLUP
SELECT CASE
WHEN Grouping(Admin_Services.S_Name) = 0 THEN Admin_Services.S_Name
ELSE 'Pathology'
END Admin_Services.S_Name,
Sum(Patient_Services.Amount) AS Total
FROM Patient_Services
INNER JOIN Admin_Services
ON Patient_Services.S_ID = Admin_Services.S_ID
WHERE Admin_Services.S_ID = 1606
OR Admin_Services.S_ID = 28451
OR Admin_Services.S_ID = 28449
AND Patient_Services.sdatetime = Getdate()
GROUP BY Admin_Services.S_Name WITH rollup
答案 2 :(得分:0)
SELECT
Admin_Services.S_Name, SUM(Patient_Services.Amount) AS Total
FROM
Patient_Services
INNER JOIN
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
WHERE
Admin_Services.S_ID = 1606 OR
Admin_Services.S_ID = 28451 OR
Admin_Services.S_ID = 28449
AND Patient_Services.sdatetime = getdate()
GROUP BY
Admin_Services.S_Name
UNION
SELECT
'Pathology' as S_Name, SUM(Patient_Services.Amount) AS Total
FROM
Patient_Services
INNER JOIN
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
WHERE
Patient_Services.TB_ID IS NOT NULL
AND Patient_Services.sdatetime = getdate()
答案 3 :(得分:0)
您可以使用UNION ALL获得您想要的上述结果。
Select
Admin_Services.S_Name, SUM(Patient_Services.Amount) AS Total
From
Patient_Services
Inner Join
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
Where
Admin_Services.S_ID = 1606 OR
Admin_Services.S_ID = 28451 OR
Admin_Services.S_ID = 28449
And Patient_Services.sdatetime = getdate()
Group By
Admin_Services.S_Name
Union All
Select
'Pathology' as S_Name, SUM(Patient_Services.Amount) AS Total
From
Patient_Services
Inner Join
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
Where
Patient_Services.TB_ID Is Not Null
And Patient_Services.sdatetime = getdate()
快乐编码
答案 4 :(得分:0)
试试这个
SELECT
case when Patient_Services.TB_ID IS NOT NULL then'Pathology' else Admin_Services.S_Name end , SUM(Patient_Services.Amount) AS Total
FROM
Patient_Services
INNER JOIN
Admin_Services ON Patient_Services.S_ID = Admin_Services.S_ID
WHERE
Admin_Services.S_ID = 1606 OR
Admin_Services.S_ID = 28451 OR
Admin_Services.S_ID = 28449
AND Patient_Services.sdatetime = getdate()
AND Patient_Services.TB_ID IS NOT NULL
GROUP BY
Admin_Services.S_Name