2014-01-27 101 views
-1

創建逗號分隔符我這裏有一個查詢,給出的結果的兩行:在選擇查詢

SELECT @SlsChannelDiv= a.division,@SlsChannel= a.department 
        FROM dbo.m_SalesCode a left join dbo.m_SalesCode b 
        ON a.up1_code=b.sales_code left join vwEmployeeAds v 
        ON a.user_id=v.login 
        WHERE v.login = @SalesLogin 

我想用@SlsChannel參數的其他問題。

Select * from wo where sales in (@SlsChannel)

但總是給人結果的第一行。

我只需提供一個XML路徑修改我的第一個查詢:

SELECT @SlsChannelDiv= a.division,@SlsChannel= a.department 
         FROM dbo.m_SalesCode a left join dbo.m_SalesCode b 
         ON a.up1_code=b.sales_code left join vwEmployeeAds v 
         ON a.user_id=v.login 
         WHERE v.login = @SalesLogin For XML PATH ('') 

不過,我得到一個錯誤,如:The FOR XML clause is not allowed in a ASSIGNMENT statement.

是否有可能創建一個@SLSChannel值,逗號分隔,在一個In參數?

+0

您是否想用相應的@SlsChannelDiv項目替換任何單個的@SlsChannel * *項*,或者用@SlsChannel替換整個'@ SlsChannel' *列表* '列表是NULL? –

+0

不,請閱讀我想要做的事情,在這種情況下,我想要使用的查詢是'Select * from wo where(@SlsChannel)'銷售''爲什麼我有@ @ SlsChannelDiv = a.division,@ SlsChannel = a。部門'我有多個條件 – Sabilv

+0

是的,這似乎或多或少清楚,我只是試圖調和它與你後來添加的說明,你說'有時@SlsChannel沒有價值,所以我會用@ SlsChannelDiv'。但是,正如你現在已經刪除它,我想@bluejaded的建議應該做得很好。 –

回答

1
Select * from wo where sales in (SELECT a.department 
       FROM dbo.m_SalesCode a left join dbo.m_SalesCode b 
       ON a.up1_code=b.sales_code left join vwEmployeeAds v 
       ON a.user_id=v.login 
       WHERE v.login = @SalesLogin) 

如何查詢它是這樣的? :)

+0

噢,當然這是可能的,但我修改了大部分代碼,但我擔心,我的查詢有多個條件,有時'@ SlsChannel'沒有值,所以我會使用'@ SlsChannelDiv' – Sabilv

+1

正確的我如果我錯了,但你希望你的第一個查詢返回多行的權利?我想你不應該給它分配任何變量,因爲它真的會返回一行。您可以直接使用臨時表,插入第一個查詢的查詢結果。然後,執行此操作:「Select * from wo where sales where(從#temptable中選擇列)。不需要逗號分隔值。 – bluejaded

+0

啊你明白了,是的,如果我賦值給任何變量,它只會給出一個值。我會對代碼做一些修改 – Sabilv