我有这些表从数据库。工作台有2个字段,其中一个是ID_W(数字),另一个是DUTY(文本)。 工作(ID_W,DUTY)SQL查询usng SELECT语句
我想创建一个sql查询,它只选择具有相同DUTY的ID_W(工号的id),其中DUTY是文本类型字段。 有人可以帮我吗?我想使用一个聚合函数,但它们都没有帮助。
我有这些表从数据库。工作台有2个字段,其中一个是ID_W(数字),另一个是DUTY(文本)。 工作(ID_W,DUTY)SQL查询usng SELECT语句
我想创建一个sql查询,它只选择具有相同DUTY的ID_W(工号的id),其中DUTY是文本类型字段。 有人可以帮我吗?我想使用一个聚合函数,但它们都没有帮助。
我用一个临时表的一个例子,但这个会做你想要什么,我相信:
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
如果我正确地理解你的问题,你正在寻找仅工人的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)
)
你是什么意思*其中DUTY是文本类型字段*? – Siyual
工作台有两个字段,其中一个是ID_W,另一个是DUTY – Doen