Sql server 2008 如何在SQL 2008中选择具有特定列值的列?
表T1包含两列id和decision。id可能会重复各种决策。请参考以下示例:Sql server 2008 如何在SQL 2008中选择具有特定列值的列?,sql-server-2008,join,distinct,Sql Server 2008,Join,Distinct,表T1包含两列id和decision。id可能会重复各种决策。请参考以下示例: Table T1: |---------------------|------------------| | id | decision | |---------------------|------------------| | abc_0011 | Forward | |------
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 |
|---------------------|------------------|
这里有两个不同的idabc_011和abc_012,其中abc_011出现三次,具有不同的决策,其中最后一个决策是拒绝,而abc_012出现两次,其中两个决策都是向前的,没有类似拒绝的决策。其思想是构造一个表,其中在任何阶段被拒绝的id必须显示reject,而在任何情况下未被拒绝的id必须显示pending。注意:id不得在最终表格中重复 下面的代码应该会给出预期的结果
;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
只有“转发”和“拒绝”是决策字段值?