2016-11-07 5 views
2

私は誰かが私の持つ問題を手伝ってくれることを願っています。私はSQL Serverの1つのテーブルに2つのクエリをマージしたい。これは私が到着したが、第2四半期中に私の手順です。[Umrli]排出することはQ1に依存するデータを設定しません。[Naziv Ustanove]SQL Serverストアドプロシージャ:2つのクエリをマージする問題

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 

答えて

1

私はこれを正しく従った場合は、2つのサブクエリは除いて同じです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; 

表の別名は、問合せの作成と読取りを容易にします。

+0

ありがとうございましたこれは解決策と答えです。私の場合はこの質問は閉じています:) –

+1

@ZdravkoLukicこれがあなたの質問に答えるなら、答えの隣にあるチェックマーク(✔)をチェックしてください。このエチケットの詳細については、[誰かが私の質問に答えるときにどうすればいいですか?](https://stackoverflow.com/help/someone-answers)を参照してください。 –

関連する問題