1

我需要帮助使用 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) 与人员(NAME) 以及组(DEPT) 相关联,那么我想更新人员(NAME) 行以具有 DEPT 名称,然后删除组(DEPT) 行。如果 ID(2) 与一个人(NAME) 和多个 DEPT(group) 相关联,那么我希望该 NAME 有两行。如果 ID(3) 包含两个不同的 NAME 和两个不同的 DEPT,那么我希望每个 NAME 和 DEPT 有单独的行,如下所示:

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

    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 语句,它从TABLE1. 是否可以?

4

1 回答 1

2

这可能对你有用。

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
于 2013-02-21T12:10:32.310 回答