我有一张桌子,上面有几件商品的价格历史记录——
Item Date Price
X 1Jan13 100
X 2Jan13 110
...
X 31Dec13 115
Y 1Jan13 50
Y 2Jan13 47
...
Y 31Dec13 58
等等。
我刚刚写了一个查询,以找出特定商品的价格连续三天没有变化的日期。使用两个内连接我的查询以以下格式返回输出 -
Item Date1 Date2 Date3 Price
X 2Jun13 3Jun13 4Jun13 110
X 3Jun13 4Jun13 5Jun13 110
...
X 29Dec13 30Dec13 31Dec13 125
Y 29Mar13 30Mar13 31Mar13 55
现在,我的问题是如何获得以下格式的输出
Item Date Price
X 2Jun13 110
X 3Jun13 110
X 4Jun13 110
X 5Jun13 110
X 29Dec13 125
X 30Dec13 125
X 31Dec13 125
等等所有项目。也就是说,如何组合/合并三个日期字段(不重复)以生成单个日期字段?因为正如你所看到的,与我现在得到的相比,所需的格式更容易阅读。
这是我用于查询的代码:
Select x.*
From (
Select T1.ItemName As Item, T1.Date As Date_3, T2.Date As Date_2, T3.Date As Date_1,
Round((T1.Price - T2.Price), 2) As Change, Round((T1.Price - T3.Price), 2) As Change_2, T1.Price As Price
From MarketData As T1 Inner Join MarketData As T2 On T1.ItemName = T2.ItemName
Inner Join MarketData As T3 On T2.ItemName = T3.ItemName
Where (T1.Date = T3.Date + 2 Or (DatePart(DW, T3.Date) In (5, 6) And T1.Date = T3.Date + 4)) And
(T2.Date = T3.Date + 1 Or (DatePart(DW, T3.Date) = 6 And T2.Date = T3.Date + 3))
) As x
Where x.Change = 0 And x.Change_2 = 0
任何帮助深表感谢。