假设有一张表中的一个字段存有一段时期的一支股票价格的收盘值,有没有办法用SQL语句很快地找到哪天是头,哪天是底。(前一天和后一天都比这天低,则为头,反之亦然,也就是说有很多头和底)

解决方案 »

  1.   

    EX:DECLARE @t TABLE (Code VARCHAR(10),dt DATETIME,price decimal(14,2))
    INSERT INTO @t 
    SELECT '中国石油','2008-10-01',11.53
    UNION ALL SELECT '中国石油','2008-10-02',11.74
    UNION ALL SELECT '中国石油','2008-10-03',11.13
    UNION ALL SELECT '中国石油','2008-10-04',12.13
    UNION ALL SELECT '中国石油','2008-10-05',11.30
    UNION ALL SELECT '中国石油','2008-10-06',11.23
    --头
    SELECT * FROM @t a
    WHERE NOT EXISTS(
    SELECT * FROM @t
    WHERE ABS(DATEDIFF(dd,a.dt,dt))=1
    AND price>a.price
    )
    --底
    SELECT * FROM @t a
    WHERE NOT EXISTS(
    SELECT * FROM @t
    WHERE ABS(DATEDIFF(dd,a.dt,dt))=1
    AND price<a.price
    )