比较快照表-TSQL中的两个日期

时间:2014-03-02 22:52:28

标签: sql sql-server tsql

我有一张快照表,其中包含特定产品及其价格的每日级别信息。 我想要实现的是将该产品的状态从当前状态与2个月前的状态进行比较。

这是ddl

CREATE TABLE Prod_snapshot
    ('Base_Date' datetime, 'Product_code' varchar(4));

INSERT INTO Prod_snapshot
    ('Base_Date', 'Product_code')
VALUES
    ('2013-10-01 13:00:00', 'VD1'),
    ('2013-10-01 13:00:00', 'VD2'),
    ('2013-10-01 13:00:00', 'VD2'),
    ('2013-10-01 13:00:00', 'VD1'),
    ('2013-10-01 13:00:00', 'VD3'),
    ('2013-10-01 13:00:00', 'VD9'),
    ('2014-02-01 13:00:00', 'VD1'),
    ('2014-02-01 13:00:00', 'VD2'),
    ('2014-02-01 13:00:00', 'VD10');

这是sql fiddle

这是我想要的输出

Base_date Product_Code Active_on_01_oct_2013 
01/02/2014 VD1 'Y'
01/02/2014 VD2 'Y'
01/02/2014 VD10 'N'

1 个答案:

答案 0 :(得分:0)

查询的基础知识如下:

DECLARE @DateOfInterest date
SET @DateOfInterest = '20140201'

SELECT p1.Base_Date,pr.Product_Code,
     CASE WHEN p2.Product_Code IS NULL THEN 'N' ELSE 'Y' END as PreviouslyActive
FROM
    Prod_snapshot p1
       left join
    Prod_snapshot p2
       on
          p1.Product_Code = p2.Product_Code and
          p2.Base_Date = DATEADD(month,-4 /* narrative says 2 */,@DateOfInterest)
WHERE
    p1.Base_Date = @DateOfInterest