2016-02-24 31 views
0
DECLARE @account VARCHAR(12) 
SET @account = '49943725' 

DECLARE @items VARCHAR(5) 
SET @items = (SELECT item_no FROM transactions 
       WHERE account = @account 
       AND item_no IN ('81','101','108','112','113','118','187','189','190','192','193','194','195')) 

SELECT 
    property, CONVERT(VARCHAR(10), account) AS account, 
    CONVERT(VARCHAR(5), item_no) AS item_no, 
    CONVERT(VARCHAR(9), amount) AS amount, 
    CONVERT(VARCHAR(9), amt_paid) AS amt_paid, 
    status, 
    CONVERT(VARCHAR(8), tran_id) AS tran_id, 
    CONVERT(VARCHAR(11), post_date) AS post_date, 
    tran_code, 
    CONVERT(VARCHAR(25), notes) AS notes, 
    clk, invoice, charge_property, * 
FROM 
    transactions 
WHERE 
    account = @account AND item_no = @items 

錯誤:一個聲明語句選擇多個值

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

+0

有關如何使@items =多個值的任何提示? – Femmer

回答

1

Any tips on how to make @items = multiple values?

否 - 一個VARCHAR(5)變量只能有一個值。您可以howvere,只是嵌入您的列表作爲一個子查詢:

SELECT 
    property, 
    CONVERT(VARCHAR(10), account) AS account, 
    CONVERT(VARCHAR(5), item_no) AS item_no, 
    CONVERT(VARCHAR(9), amount) AS amount, 
    CONVERT(VARCHAR(9), amt_paid) AS amt_paid, status, 
    CONVERT(VARCHAR(8), tran_id) AS tran_id, 
    CONVERT(VARCHAR(11), post_date) AS post_date, tran_code, 
    CONVERT(VARCHAR(25), notes) AS notes, clk, invoice, charge_property, * 
FROM transactions 
WHERE account = @account 
AND item_no IN (SELECT item_no FROM transactions 
       WHERE account = @account 
       AND item_no IN   
       ('81','101','108','112','113','118','187','189','190','192','193','194','195')) 
0

你可以使用一個table variable

DECLARE @Account VARCHAR(12) = '49943725'; 
DECLARE @Items TABLE (ItemNo VARCHAR(5)); 

INSERT @Items (Item_no) 
SELECT item_no 
FROM transactions 
WHERE account = @account 
AND  item_no IN ('81','101','108','112','113','118','187','189','190','192','193','194','195'); 

然後在你的實際查詢使用IN

AND  item_no IN (SELECT ItemNo FROM @Items); 

雖然除非你的查詢來獲取項目比你表現出什麼更復雜,你會一樣好以下d士丹利的建議和配售您在主查詢中的查詢。