获取满足特定条件的记录并排除其他记录

时间:2016-11-04 13:40:42

标签: sql-server-2008-r2

我有以下客户帐户决定和状态数据

{{1}}

我想得到 其决定为“接受”且状态为“已存入”,“合同”的记录

并获取其决定为“有条件接受”且状态(“已存入”,“合同”)的记录

在两个不同的列中。

请为此撰写案例陈述。

我的输出应该是这样的: 我的输出应该像Client字段值newcol1 newcol2 111决定接受
111状态保证111 112决定接受 113决定接受 114决定接受 114身份合同114 115条件接受决定 115已存入的状态115 116决定条件接受 117条件接受决定 118地位合同118 118条件接受决定

1 个答案:

答案 0 :(得分:1)

使用条件聚合:

SELECT Client
FROM yourTable
GROUP BY Client
HAVING (SUM(CASE WHEN fields = 'Decision' AND value = 'accept'
                THEN 1 ELSE 0 END) > 0 AND
        SUM(CASE WHEN fields = 'Status' AND value IN ('deposited', 'contract')
                THEN 1 ELSE 0 END) > 0)
       OR
       (SUM(CASE WHEN fields = 'Decision' AND value = 'Conditional Accept'
                THEN 1 ELSE 0 END) > 0 AND
        SUM(CASE WHEN fields = 'Status' AND value IN ('deposited', 'contract')
                THEN 1 ELSE 0 END) > 0)