我有一张快照表,其中包含特定产品及其价格的每日级别信息。 我想要实现的是将该产品的状态从当前状态与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'
答案 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