2013-02-20 34 views
0

我有一个包含以下数据的表。在sybase中自加入的更新语句

Emp_Id Name dept cat 
1  abc    P 
1    HC  G 
2  def    P 
2    ET  G 
3  ghi    P 
3    BC  G 
3    MN  G 
4  jkl    P 
4    LS  G 
4    LS  G 

我想更新此表格以产生类似的输出记录。

Emp_Id  Name dept cat 
    1  abc  HC  P 
    2  def  ET  P 
    3  ghi  BC  P 
    4  jkl  LS  p 

如果EMP_ID与两个不同的部门相关联,那么它应该更新部门中的任一个(EMP_ID = 3)。如果一个Emp_Id与两个相同的部门相关联,那么它应该来一次(Emp_Id = 4)。 我使用下面的查询

UPDATE Table1 
    SET a.dept = b.dept 
    from Table1 a, Table1 b   
    WHERE 
     a.Emp_Id=b.Emp_Id 
     and a.cat='P' 

,但它不是为EMP_ID 3更新任何东西,4 谁能帮助?

感谢, DHIRAJ

+0

我自己得到了....谢谢 – DSD 2013-02-21 04:45:37

回答

0

多个步骤Psudeo代码,因为我不知道SYBASE的语法不够好:

Get the results you're after in a select. 
SELECT EMP_ID, max(name), max(Dept), max(cat) 
FROM tableName 
GROUP BY EMPI_ID 

插入这些结果到一个临时表

放下你的表并重新创建它来自临时表。