SQL Server存储过程:发出合并两个查询
我希望有人能帮助你解决我遇到的问题。我想在SQL Server中将两个查询合并到一个表中。这是我到达的程序,但在第2季度。[Umrli]弹出未将数据设置为取决于第1季度。[Naziv Ustanove]SQL Server存储过程:发出合并两个查询,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我希望有人能帮助你解决我遇到的问题。我想在SQL Server中将两个查询合并到一个表中。这是我到达的程序,但在第2季度。[Umrli]弹出未将数据设置为取决于第1季度。[Naziv Ustanove] ALTER PROCEDURE [dbo].[test] AS BEGIN SELECT q1.[Naziv ustanove], q1.[Broj lica], q1.[Broj dana lezanja], q2.Umrli FROM (S
ALTER PROCEDURE [dbo].[test]
AS
BEGIN
SELECT
q1.[Naziv ustanove], q1.[Broj lica], q1.[Broj dana lezanja], q2.Umrli
FROM
(SELECT
i_bolnica.naziv AS [Naziv ustanove],
COUNT (bolnickiracunSve.id) AS [Broj lica],
SUM(bolnickiracunSve.br_dana_lezanja) AS [Broj dana lezanja]
FROM
i_bolnica
INNER JOIN
bolnickiracunSve ON i_bolnica.id = bolnickiracunSve.id_bolnica
WHERE
bolnickiracunSve.id_bolnica < 91
AND bolnickiracunSve.id_odeljenje_otpust NOT IN (800,801,802)
AND bolnickiracunSve.id_drzavljanstvo IN (688)
AND dbo.GrupeBolesti(bolnickiracunSve.id_osnovni_uzrok_hospitalizacije) NOT IN ('z%')
GROUP BY
i_bolnica.naziv)q1
CROSS JOIN
(SELECT
i_bolnica.naziv AS [Naziv ustanove],
COUNT (bolnickiracunSve.id) AS [Umrli]
FROM
i_bolnica
INNER JOIN
bolnickiracunSve ON i_bolnica.id = bolnickiracunSve.id_bolnica
WHERE
bolnickiracunSve.id_bolnica < 91
AND bolnickiracunSve.id_odeljenje_otpust NOT IN (800, 801, 802)
AND bolnickiracunSve.id_drzavljanstvo IN (688)
AND dbo.GrupeBolesti(bolnickiracunSve.id_osnovni_uzrok_hospitalizacije) NOT IN ('z%')
AND bolnickiracunSve.id_vrsta_otpusta = '6'
GROUP BY
i_bolnica.naziv)q2
END
如果我没有弄错,这两个子查询除了where子句之外是相同的。如果是,请使用条件聚合:
SELECT b.naziv AS [Naziv ustanove],
COUNT(s.id) AS [Broj lica],
SUM(s.br_dana_lezanja) AS [Broj dana lezanja],
SUM(CASE WHEN s.id_vrsta_otpusta = '6' THEN 1 ELSE 0 END)
FROM i_bolnica b INNER JOIN
bolnickiracunSve s
ON b.id = s.id_bolnica
WHERE s.id_bolnica < 91 AND
s.id_odeljenje_otpust NOT IN (800, 801, 802) AND
s.id_drzavljanstvo IN (688) AND
dbo.GrupeBolesti(s.id_osnovni_uzrok_hospitalizacije) NOT IN ('z%')
GROUP BY b.naziv;
请注意,表别名使查询更易于编写和阅读。谢谢Gordon这是我想看到的解决方案和答案,在我的情况下,此问题已结束:@ZdravkoLukic如果这回答了您的问题,请选中复选标记✔ 在答案旁边。请在此处阅读有关此礼仪的更多信息:。