DECLARE @原表 TABLE ( 
日期  VARCHAR(10),号码1 VARCHAR(10),号码2 VARCHAR(10),序号 INT,标记  VARCHAR(10) ,其它字段 VARCHAR(10) ) 
INSERT INTO @原表 
SELECT '20060101',  'A1','B1',        1,      'Y'    ,NULL              UNION ALL 
SELECT '20060101',  'C1','D1',      3,    'N',NULL  UNION ALL 
SELECT '20060102',  'C1','D1',      1,    'Y',NULL  UNION ALL 
SELECT '20070101',  'E1','F1',      4,    'N',NULL  UNION ALL 
SELECT '20070101',  'E1','F1',      3,      'N',NULL  UNION ALL 
SELECT '20080101',  'P1','Q1',      6,    'N',NULL  UNION ALL 
SELECT '20080101',  'P1','Q1',      9,    'Y',NULL 
SELECT  * FROM @原表 A SELECT  * FROM @原表 A 
WHERE  EXISTS( SELECT 1 FROM @原表 WHERE 日期 > a.日期 AND 号码1 = a.号码1 AND 号码2 = a.号码2)
你是不要想得到这样?

解决方案 »

  1.   

    DECLARE @原表 TABLE ( 
    日期  VARCHAR(10),号码1 VARCHAR(10),号码2 VARCHAR(10),序号 INT,标记  VARCHAR(10) ,其它字段 VARCHAR(10) ) 
    INSERT INTO @原表 
    SELECT '20060101',  'A1','B1',        1,      'Y'    ,NULL              UNION ALL 
    SELECT '20060101',  'C1','D1',      3,    'N',NULL  UNION ALL 
    SELECT '20060102',  'C1','D1',      1,    'Y',NULL  UNION ALL 
    SELECT '20070101',  'E1','F1',      4,    'N',NULL  UNION ALL 
    SELECT '20070101',  'E1','F1',      3,      'N',NULL  UNION ALL 
    SELECT '20080101',  'P1','Q1',      6,    'N',NULL  UNION ALL 
    SELECT '20080101',  'P1','Q1',      9,    'Y',NULL 
    SELECT  * FROM @原表 A 
    WHERE  EXISTS( SELECT TOP 1 * FROM @原表 WHERE 日期 < a.日期 AND 号码1 = a.号码1 AND 号码2 = a.号码2) 
    我想得到查询结果为日期为20060102的记录 
    我觉得根据WHERE 日期 < a.日期条件应该是WHERE 日期 > a.日期 啊,可是条件改为WHERE 日期 > a.日期,得到的结果却是20060101的记录