Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
SQL Server存储过程:发出合并两个查询_Sql_Sql Server_Stored Procedures - Fatal编程技术网

SQL Server存储过程:发出合并两个查询

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

我希望有人能帮助你解决我遇到的问题。我想在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 
        (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如果这回答了您的问题,请选中复选标记✔ 在答案旁边。请在此处阅读有关此礼仪的更多信息:。