誰能幫助我理解這個錯誤?我在這里到底不能做什么?
SELECT
CASE[/span]>
WHEN tagged_id != ' '/span>
THEN (SELECT tagged_id FROM stock)
ELSE ps_id
END AS 'Tag'/span>
FROM
股票
完整的錯誤是:
子查詢回傳1個以上的值。當子查詢跟隨=, !=, <, <= , >, >=或子查詢作為運算式使用時,這是不允許的。
uj5u.com熱心網友回復:
你使用case運算式的想法是正確的,但你不需要另一個子查詢,因為無論如何這兩列都屬于同一行:
SELECT。
CASE
WHEN tagged_id != ' '/span>
THEN tagged_id
ELSE ps_id
END AS 'Tag'/span>
FROM
股票
uj5u.com熱心網友回復:
你正在使用一個case運算式 - 這個運算式必須產生一個single值。錯誤資訊對這個問題說得很清楚。
你的else部分回傳單一值ps_id,而你的case運算式的結果是一個名為Tag的列。
陳述句(select tagged_id from stock)從表中選擇一個列,為了符合case expression的預期結果,這必須回傳一個單一的值;即使你知道一個表包含一個單行(我打賭它不知道),SQL server直到運行時才知道,然而查詢在編譯時被評估為在所有情況下有效。畢竟,為單列回傳n值是沒有意義的,而且SQL Server將不允許這種情況發生。
SQL Server 希望您明確地回傳一個單一的值,例如使用 aggregate 函式 或 top (1) 條款。
你可能只是想做
你可能只是想做
CASE WHEN tagged_id ! = ' ' THEN tagged_id ELSE ps_id END AS ' Tag'
uj5u.com熱心網友回復:
這一行回傳多于1條記錄
THEN (SELECT tagged_id FROM stock)
為了避免錯誤,你的查詢必須只回傳一條記錄。你可以添加頂部1
THEN (SELECT top 1 tag_id FROM stock)
uj5u.com熱心網友回復:
當我們嘗試使用子查詢,向呼叫查詢回傳一個以上的值時,就會出現這個錯誤。我通常會嘗試以下的每一個步驟。
SELECT CASE WHEN tagged_id != ' ' THEN (SELECT TOP 1 tagged_id FROM stock) ELSE ps_id END作為'標簽'。 FROM stock
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311062.html
標籤:
上一篇:沒有游標的TSQL幫助
下一篇:我怎樣才能改寫sql陳述句?
