如何使用表中具有相同事务代码的sql过滤掉记录

时间:2015-01-30 06:41:33

标签: sql-server

预期输出(**低于OrgnztnNumberID只是一个例子):**

OrgnztnNumber   CardStatusCode  TrnsctnTypeCode
7317704            Expired           607
7317704            Active            607

表格数据

Select OrgnztnNumber, CardStatusCode, TrnsctnTypeCode from [CSB10020_ProfileApplctn].[dbo].[CST01140_CreditCard] with(nolock)

OrgnztnNumber   CardStatusCode  TrnsctnTypeCode
2316                Expired        601
2316                Active         013
6688                Active         600
6688                Expired        604
6695                Active         013
6695                Active         607
7616760             Expired        604
7616760             Active         604
7616760             Active         013
6728                Expired        600
6728                Active         013
6731                Active         013
7317704             Expired        607
7317704             Active         607
7317704             Active         013

如何在具有相同organisaton id但具有不同cardstatuscode的表中过滤出具有相同传输代码的记录(例如,一个是"过期"另一个是"活动")

1 个答案:

答案 0 :(得分:3)

尝试:

DECLARE @t TABLE
    (
      OrgnztnNumber NVARCHAR(MAX) ,
      CardStatusCode NVARCHAR(MAX) ,
      TrnsctnTypeCode NVARCHAR(MAX)
    )

INSERT  INTO @t
VALUES  ( '7317704', 'Expired', '607' ),
        ( '7317704', 'Active', '607' ),
        ( '7317705', 'Active', '607' ),
        ( '7317705', 'Active', '607' )


SELECT  DISTINCT t1.*
FROM    @t t1
        JOIN @t t2 ON t2.OrgnztnNumber = t1.OrgnztnNumber
                      AND t2.TrnsctnTypeCode = t1.TrnsctnTypeCode
                      AND t2.CardStatusCode <> t1.CardStatusCode
ORDER BY t1.OrgnztnNumber, t1.TrnsctnTypeCode , t1.CardStatusCode 

输出:

OrgnztnNumber   CardStatusCode  TrnsctnTypeCode
7317704         Expired         607
7317704         Active          607