2013-02-21 14 views
1

我需要幫助用Sybase構建SQL語句來摺疊由三列,ID,名稱和DEPT鏈接的行。我有一個表TABLE1Sybase SQL select語句按ID摺疊和壓縮行

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可以是人(NAME)以及組(DEPT)。如果ID(1)與一個人(NAME)以及一個組(DEPT)相關聯,那麼我想要更新人(NAME)行以具有DEPT名稱,然後刪除組(DEPT)行。如果ID(2)與一個人(NAME)和多個DEPT(組)相關聯,那麼我想爲該名稱設置兩行。如果ID(3)包含兩個不同的名稱和兩個不同的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語句。可能嗎?

回答

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 
+0

感謝您的回覆。我會嘗試這種方法。 – DSD 2013-02-21 14:21:21

+0

謝謝凱文。我能夠繼續解決問題。 – DSD 2013-02-22 04:44:30