2016-08-30 6 views
0
SELECT 
    a.APOIT AS 'Item', 
    (SELECT SUBSTRING(LTRIM(RTRIM(Requisition)), 1, 6) as Requisition 
    FROM DBO_POLB015.db_datareader.CMSFIL_POLB15 as b 
    WHERE b.PONO = a.APONO and b.Item = a.APOIT) as 'Req', 
    REPLACE(REPLACE(REPLACE(REPLACE(ltrim(rtrim(a.AD30A)) + 
     CASE 
      WHEN STUFF((SELECT '; ' + (LTRIM(RTRIM(AI50A)) + LTRIM(RTRIM(AI50B)) + LTRIM(RTRIM(AI50C))) 
         FROM [DBO_CMSFIL].[dbo].[POTMDI] 
         LEFT OUTER JOIN [DBO_CMSFIL].[dbo].POTMDT ON POTMDI.APOIT = POTMDT.APOIT AND POTMDI.ADVNO = POTMDT.ADVNO AND POTMDI.ACONO = POTMDT.ACONO AND POTMDI.APONO = POTMDT.APONO 
         WHERE POTMDI.APONO = a.APONO and POTMDT.APOIT= a.APOIT 
         FOR XML PATH('')), 1, 1, '') IS NULL 
       THEN '' 
       ELSE STUFF((SELECT '; ' + (ltrim(rtrim(AI50A)) + ltrim(rtrim(AI50B)) + ltrim(rtrim(AI50C))) 
          FROM [DBO_CMSFIL].[dbo].[POTMDI] 
          LEFT OUTER JOIN [DBO_CMSFIL].[dbo].POTMDT ON POTMDI.APOIT = POTMDT.APOIT AND POTMDI.ADVNO = POTMDT.ADVNO AND POTMDI.ACONO = POTMDT.ACONO AND POTMDI.APONO = POTMDT.APONO 
          WHERE POTMDI.APONO = a.APONO and POTMDT.APOIT= a.APOIT 
          FOR XML PATH('')), 1, 1, '') 
      end, 
    '&',' & '),' ',''),''', '\'),'"', '\"') as Description, 
    a.AQTOR AS 'QtyOrdered', 
    A.AUM AS 'Units' 
FROM 
    [DBO_CMSFIL].[dbo].[POTMDT] AS a 
WHERE 
    a.APONO = '152988' 
ORDER BY 
    a.APOIT 

私は、次のメッセージを取得するとして使用する場合:!は認められない=、=、<, <= , >、> =または式

サブクエリが複数の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。

どうすればこの問題を解決できますか?

+4

サブクエリが複数の行を返す場合、結果としてどのような結果が必要なのかを最初に把握してから、その条件にしたがって修正する必要があります – Lamak

答えて

1

エラーメッセージと同じです:SINGLE値+行のみが許可されているコンテキストに複数の列および/または複数の行を戻すサブクエリがあります。

複数の行の場合は、INの一致に簡単に切り替えることができます。複数のフィールドの場合、それは間違っているだけです。

SELECT (SELECT * FROM tablewithlotsoforws) // wrong 
SELECT (SELECT singlefield FROM tablewithlotsofrows WHERE match=singlerow) // ok 
SELECT ... WHERE foo = (SELECT lotsofrows FROM sometable) // wrong 
SELECT ... WHERE foo IN (SELECT lotsofrows FROM sometable) // ok 
SELECT ... WHERE foo IN (SELECT lotsofrows, evenmorerows FROM stable) // wrong again 
関連する問題

 関連する問題