Sybase SQL select语句以按ID折叠和压缩行

Sybase SQL select语句以按ID折叠和压缩行,sql,sql-update,sybase,sql-insert,Sql,Sql Update,Sybase,Sql Insert,我需要帮助使用Sybase构造SQL语句以折叠由ID、Name和DEPT三列链接的行。我有一个表TABLE1: ID NAME DEPT CAT 1 ghi P 1 CV G 2 abc P 2 IT G 2 HC G 3 def P 3

我需要帮助使用Sybase构造SQL语句以折叠由ID、Name和DEPT三列链接的行。我有一个表
TABLE1

ID    NAME     DEPT     CAT
1     ghi                P
1               CV       G
2     abc                P
2               IT       G
2               HC       G
3     def                P
3     jkl                P
3               ENT      G
3               MC       G
CAT列表示类别。P列表示人。G列表示组

ID
可以是个人(姓名)也可以是组(部门)

如果ID(1)与人员(名称)和组(部门)关联,则我希望将人员(名称)行更新为具有部门名称,然后删除组(部门)行。如果ID(2)与一个人(名称)和多个部门(组)关联,那么我希望该名称有两行。如果ID(3)包含两个不同的名称和两个不同的部门,则我希望每个名称和部门都有单独的行,如下所示:

以下是我想要的预期输出:

    ID    NAME     DEPT     CAT
    1     ghi       CV       P
    2     abc       IT       P
    2     abc       HC       P
    3     def       ENT      P
    3     def       MC       P
    3     jkl       ENT      P
    3     jkl       MC       P

我想要一个SQL语句,它从
表1
返回上述行。有可能吗?

这可能适合你

SELECT t1.ID, t1.NAME, t2.DEPT, t1.CAT 
FROM TABLE1 AS t1
     INNER JOIN TABLE1 AS t2 ON (t1.ID = t2.ID)
WHERE t2.DEPT IS NOT NULL AND t1.NAME IS NOT NULL

谢谢你的回复。我会试试这个方法。谢谢凯文。我能够着手解决这个问题。