2017-07-21 18 views
0

私は組織をコードの代わりに省略記号でグループ化するクエリを作成しようとしています。ただし、場合によっては、orgcodeフィールドが空白になります。これは、顧客の郵便番号フィールドを調べ、それに基づいてグループ化する必要があることを意味します。私は、次のクエリを書かれている:私は、クエリを実行するとフィールドが空白のときにサブクエリを使用して値を挿入する

SELECT 
    dem.N1_1_NUMBER, 
    dem.N1_8_POSTCODE, 
    src.N1_3_ORG_CODE_SEEN, 
    Case 
      When src.N1_3_ORG_CODE_SEEN IN ('XRT01', 'XRT02') Then 'ILR' 
      When src.N1_3_ORG_CODE_SEEN IN ('XRTBP', 'XRTBU') Then 'HGF' 
      When src.N1_3_ORG_CODE_SEEN = 'XRTBW'   Then 'HGW' 
      When src.N1_3_ORG_CODE_SEEN IS NULL 
       Then (Select 
         Case 
         When LEFT(dem.N1_8_POSTCODE, 4) in ('LA1 ', 'LA2 ', 'LA3 ', 'LA4 ', 'LA5 ', 'LA6 ','LA7 ','LA8 ') Then 'RLI' 
         When LEFT(dem.N1_8_POSTCODE, 4) in ('LA9 ', 'LA10', 'LA11') Then 'WGH' 
         When LEFT(dem.N1_8_POSTCODE, 4) in ('LA12', 'LA13', 'LA14', 'LA15', 'LA16') Then 'FGH' 
         Else 'Unknown' 
         End 

        From Register.dbo.tblMAIN_REFERRALS mr 

          LEFT JOIN Register.dbo.tblDEMOGRAPHICS dem 
          ON mr.Customer_ID = dem.Customer_ID 
        ) End as [ORG SEEN]            

FROM Register.dbo.MAIN_REFERRALS src 

     Left JOIN Register.dbo.DEMOGRAPHICS dem 
      ON src.PATIENTID = dem.PATIENTID 

は、私は次のエラーを取得する:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

私は全くわからないクエリはので、任意の助けを働いていない理由でしょう感謝する。

答えて

0

私はあなたがそのサブクエリを必要としないと思う。これ

SELECT dem.N1_1_NUMBER, 
     dem.N1_8_POSTCODE, 
     src.N1_3_ORG_CODE_SEEN, 
     CASE 
     WHEN src.N1_3_ORG_CODE_SEEN IN ('XRT01', 'XRT02') THEN 'ILR' 
     WHEN src.N1_3_ORG_CODE_SEEN IN ('XRTBP', 'XRTBU') THEN 'HGF' 
     WHEN src.N1_3_ORG_CODE_SEEN = 'XRTBW' THEN 'HGW' 
     WHEN src.N1_3_ORG_CODE_SEEN IS NULL THEN 
      CASE 
      WHEN LEFT(dem.N1_8_POSTCODE, 4) IN ('LA1 ', 'LA2 ', 'LA3 ', 'LA4 ', 
                'LA5 ', 'LA6 ', 'LA7 ', 'LA8 ') THEN 'RLI' 
      WHEN LEFT(dem.N1_8_POSTCODE, 4) IN ('LA9 ', 'LA10', 'LA11') THEN 'WGH' 
      WHEN LEFT(dem.N1_8_POSTCODE, 4) IN ('LA12', 'LA13', 'LA14', 'LA15', 'LA16') THEN 'FGH' 
      ELSE 'Unknown' 
      END 
     END AS [ORG SEEN] 
FROM Register.dbo.MAIN_REFERRALS src 
     LEFT JOIN Register.dbo.DEMOGRAPHICS dem 
       ON src.PATIENTID = dem.PATIENTID 
+0

これは完全に機能します。早速のご返事ありがとうございます! – Jimmy

+0

私はupvoteとshorltyを受け入れるよ – Jimmy

0

のようなものを試してみてください。これは、郵便番号フィールドを引くためにあなたのサブクエリが複数行を返している意味...サブクエリではありませんあなたの外部クエリから何かを参照するので、すべてを返します。 私は何かが足りない...代わりに

    From Register.dbo.tblMAIN_REFERRALS mr 

         LEFT JOIN Register.dbo.tblDEMOGRAPHICS dem 
         ON mr.Customer_ID = dem.Customer_ID 
をやっていない限りそれを行う

    From Register.dbo.tblMAIN_REFERRALS mr 
        WHERE mr.Customer_ID = dem.Customer_ID 

を試してみてください、あなたのサブクエリが唯一の外部クエリの各行に関連する結果を返すことができます。

関連する問題