【问题标题】:Sybase SQL select statement to collapse and condense rows by an IDSybase SQL select 语句按 ID 折叠和压缩行
【发布时间】:2013-06-21 04:35:10
【问题描述】:

我需要使用 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

我想要一个从TABLE1 返回上述行的 SQL 语句。有可能吗?

【问题讨论】:

    标签: sql sql-update sybase sql-insert


    【解决方案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
    

    【讨论】:

    • 感谢您的回复。我会尝试这种方法。
    • 谢谢凯文。我可以继续解决问题。
    猜你喜欢
    • 2017-11-14
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多