Sql查询usng SELECT语句

时间:2016-02-08 20:17:05

标签: sql

我从数据库中获取这些表。表WORKER有2个字段,其中一个是ID_W(数字),另一个是DUTY(文本)。 员(ID_W,DUTY)

我想创建一个sql查询,只选择ID_W(worker的id),它具有相同的DUTY,其中DUTY是文本类型字段。 有人能帮我吗?我想使用聚合函数,但它们都没有帮助。

2 个答案:

答案 0 :(得分: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 :(得分:1)

如果我正确理解您的问题,那么您正在寻找 DUTY字段与其他工作人员匹配的工作人员的ID。

您可以使用WHERE EXISTS子句执行此操作,但您需要将CONVERTTEXT列添加到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)
)