2016-02-08 173 views
-3

我有這些表從數據庫。工作臺有2個字段,其中一個是ID_W(數字),另一個是DUTY(文本)。 工作(ID_W,DUTY)SQL查詢usng SELECT語句

我想創建一個sql查詢,它只選擇具有相同DUTY的ID_W(工號的id),其中DUTY是文本類型字段。 有人可以幫我嗎?我想使用一個聚合函數,但它們都沒有幫助。

+0

你是什麼意思*其中DUTY是文本類型字段*? – Siyual

+0

工作臺有兩個字段,其中一個是ID_W,另一個是DUTY – Doen

回答

1

我用一個臨時表的一個例子,但這個會做你想要什麼,我相信:

SELECT Duty, 
STUFF((
    SELECT ', ' + CAST(ID_W AS VARCHAR(MAX)) 
    FROM #WORKER 
    WHERE Duty = T.DUTY 
    FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)') 
    ,1,2,'') AS IDs FROM #WORKER T 
GROUP BY Duty 
1

如果我正確地理解你的問題,你正在尋找工人的ID其DUTY字段匹配另一名工人。

您可以使用WHERE EXISTS子句執行此操作,但您需要將TEXT列的TEXT列轉換爲VARCHAR (MAX)以便比較它們。雙方的這種轉換會使查詢變得昂貴,但這是另一種方法:

Select ID_W 
From WORKER A 
Where Exists 
(
    Select * 
    From WORKER B 
    Where A.ID_W <> B.ID_W 
    And  Convert(Varchar (Max), A.DUTY) = Convert(Varchar (Max), B.DUTY) 
)