代码之家  ›  专栏  ›  技术社区  ›  Md Kamran Azam

如何在SQL 2008中选择具有特定列值的列?

  •  0
  • Md Kamran Azam  · 技术社区  · 7 年前

    我有包含两列id和decision的表T1。ID可能重复用于各种决策。请参考以下示例:

     Table T1:
        |---------------------|------------------|
        |      id             |     decision     |
        |---------------------|------------------|
        |      abc_0011       |      Forward     |
        |---------------------|------------------|
        |      abc_0011       |      Forward     |
        |---------------------|------------------|
        |      abc_0011       |      Reject      |
        |---------------------|------------------|
        |      abc_0012       |      Forward     |
        |---------------------|------------------|
        |      abc_0012       |      Forward     |
        |---------------------|------------------|
    
     Required Table:
        |---------------------|------------------|
        |      id             |     decision     |
        |---------------------|------------------|
        |      abc_0011       |      Reject      |
        |---------------------|------------------|
        |      abc_0012       |      Pending     |
        |---------------------|------------------|
    

    这里有两个不同的ID 美国广播公司 ABC公司 ,abc_011出现三次,不同的决定是最后一个决定被拒绝,而abc_012出现两次,两个决定都是向前的,没有像拒绝这样的决定。其思想是构造一个表,其中在任何阶段被拒绝的ID必须显示拒绝,在任何情况下未被拒绝的ID必须显示挂起。注意:ID不能在最后一个表中重复。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Rajesh Bhat    7 年前

    下面的代码应该给出预期的结果。

    ;WITH CTE AS (
    SELECT  ID,MAX(DECISION) DECISION
    FROM T1
    GROUP BY ID
    )
    SELECT  ID,CASE WHEN DECISION!='Reject' THEN 'Pending' ELSE DECISION END DECISION
    FROM CTE