Sql 基于多列返回行

Sql 基于多列返回行,sql,Sql,我是一个新手微软查询用户。我有一张桌子,上面有 ckno ckdate type 123 12/1/12 PV 654 11/6/12 EP 123 12/14/12 EP 852 01/3/13 PV 我想返回所有具有PV或EP类型的行,其中ck是相同的第1行和第3行。sql是什么样子的。您可以试试这个,它应该允许您在类型上有多种差异: SELECT * FROM YourTable T WHERE EXIS

我是一个新手微软查询用户。我有一张桌子,上面有

ckno    ckdate    type  
123     12/1/12     PV  
654     11/6/12     EP
123     12/14/12    EP
852     01/3/13     PV 

我想返回所有具有PV或EP类型的行,其中ck是相同的第1行和第3行。sql是什么样子的。

您可以试试这个,它应该允许您在类型上有多种差异:

SELECT *
FROM YourTable T
WHERE EXISTS (  SELECT ckno 
                FROM YourTable
                WHERE [type] IN ('PV','EP')
                AND ckno = T.ckno
                GROUP BY ckno
                HAVING COUNT(*)>1)
    SELECT *
    FROM SomeTable t
    WHERE EXISTS 
        (SELECT 1 FROM SomeTable x 
        WHERE x.ckno = t.ckno AND x.type <> t.type)

我应该指出,如果[type]可以为NULL,那么您需要确保在x.type和t.type之间使用ISNULL来处理它,这大概是最好的方法。