2014-03-25 20 views
0

我寫這樣子查詢返回多個值與案件

SELECT * FROM (
    SELECT CASE co.grdtxtCertificationOther 
     WHEN 'อย.' THEN 2 
     WHEN 'มผช.' THEN 3 
     WHEN 'มอก.' THEN 4 
     WHEN 'ฮาลาล' THEN 5 
     WHEN 'Q' THEN 6 
     WHEN 'GMP' THEN 7 
     WHEN 'GAP' THEN 8 
     WHEN 'HACCP' THEN 9 
     WHEN 'เกษตรอินทรีย์' THEN 10 
     ELSE 1 
     END As ID, 
     co.[grdtxtCertificationOther] AS STDName, 
     co.[grdtxtCertificationNumberOther] AS STDNumber, 
     CONVERT(VARCHAR(24), 
      (SELECT CASE 
      WHEN LEN(grddatIssueDateOther) >4 THEN grddatIssueDateOther 
      END 
      FROM custom.[tblR_docProduct_grdCertificationOther] 
      WHERE dp.id = co.[_parent] 
      ),109 
     ) AS SentDate, 
     dp.libtxtUserID AS ParentID, 
     1 AS Displayorder, 
     0 AS isDisable 
     FROM Custom.tblR_docProduct dp 
     INNER JOIN [Custom].[tblR_docProduct_grdCertificationOther] co 
     ON dp.Id = co._Parent 
    ) t 

查詢,它顯示了在這個

(
SELECT CASE 
WHEN LEN(grddatIssueDateOther) >4 THEN grddatIssueDateOther 
END 
FROM custom.[tblR_docProduct_grdCertificationOther] 
WHERE dp.id = co.[_parent]),109 
) As SentDate 

我不要錯誤

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

不知道爲什麼,卡在它上面

+1

運行只是錯誤查詢的結果是什麼? –

+0

是的結果只是一個錯誤 – user3441435

+1

讓我澄清。嘗試運行查詢'SELECT CASE WHEN LEN(...)'。它是否返回多於一行? –

回答

1

我懷疑你只是想:

SELECT CASE co.grdtxtCertificationOther 
      WHEN 'อย.' THEN 2 
      WHEN 'มผช.' THEN 3 
      WHEN 'มอก.' THEN 4 
      WHEN 'ฮาลาล' THEN 5 
      WHEN 'Q' THEN 6 
      WHEN 'GMP' THEN 7 
      WHEN 'GAP' THEN 8 
      WHEN 'HACCP' THEN 9 
      WHEN 'เกษตรอินทรีย์' THEN 10 ELSE 1 END As ID 
     , co.[grdtxtCertificationOther] AS STDName 
     , co.[grdtxtCertificationNumberOther] AS STDNumber 
     , CONVERT(VARCHAR(24), 
      CASE 
       WHEN LEN(co.grddatIssueDateOther) >4 THEN co.grddatIssueDateOther 
        END,109) As SentDate 
     , dp.libtxtUserID As ParentID 
     , 1 AS Displayorder 
     , 0 AS isDisable 
        FROM Custom.tblR_docProduct dp 
INNER JOIN [Custom].[tblR_docProduct_grdCertificationOther] co 
ON dp.Id = co._Parent 

因爲此刻,你的子查詢是一個不相關的一個 - 它引入了一個參考tblR_docProduct_grdCertificationOther表,但隨後的WHERE條款不僅使斷言關於外部參照(別名爲co)和Custom.tblR_docProduct表(別名爲dp)。

如果你真的想要一個子查詢,這是很難判斷它應該是什麼,因爲你嘗試裏面的WHERE條款似乎是相同的codp之間的電流JOIN條件。

目前還不清楚爲什麼你有一個外部查詢,只在一個子查詢上執行SELECT *

+0

非常感謝你@Damien你是我的男人,可以解決我的問題,並感謝你的新知識 – user3441435