我正在运行MS-SQL Server 2008 R2 我有一个表格,其设置如下。有些日期价格为0;但它的占位符意味着上个月的价格没有变化。我可以使用Coalesce或其他函数来使用最接近的PREVIOUS日期的价值 - 这不是零吗?
**项目名称|日期|价格**
Item1 | 01/01/2013 | 10.00
Item1 | 02/01/2013 | 9.50
Item1 | 03/01/2013 | 0
Item1 | 04/01/2013 | 9.50
Item1 | 05/01/2013 | 8.00
Item1 | 06/01/2013 | 8.00
Item1 | 07/01/2013 | 6.00
Item1 | 08/01/2013 | 6.00
Item1 | 09/01/2013 | 0
Item2 | 01/01/2013 | 50.00
Item2 | 02/01/2013 | 45.00
Item2 | 03/01/2013 | 35.00
Item2 | 04/01/2013 | 30.00
Item2 | 05/01/2013 | 25.00
Item2 | 06/01/2013 | 0
Item2 | 07/01/2013 | 10.00
Item2 | 08/01/2013 | 0
Item2 | 09/01/2013 | 0
期望的输出 **项目名称|日期|价格**
Item1 | 01/01/2013 | 10.00
Item1 | 02/01/2013 | 9.50
Item1 | 03/01/2013 | 9.50
Item1 | 04/01/2013 | 9.50
Item1 | 05/01/2013 | 8.00
Item1 | 06/01/2013 | 8.00
Item1 | 07/01/2013 | 6.00
Item1 | 08/01/2013 | 6.00
Item1 | 09/01/2013 | 6.00
Item2 | 01/01/2013 | 50.00
Item2 | 02/01/2013 | 45.00
Item2 | 03/01/2013 | 35.00
Item2 | 04/01/2013 | 30.00
Item2 | 05/01/2013 | 25.00
Item2 | 06/01/2013 | 25.00
Item2 | 07/01/2013 | 10.00
Item2 | 08/01/2013 | 10.00
Item2 | 09/01/2013 | 10.00
答案 0 :(得分:0)
这是样本表
SELECT * INTO #TEMP
FROM
(
SELECT 'Item1' [Item Name], '01/01/2013' [Date], 10.00 [Price]
UNION ALL
SELECT 'Item1', '02/01/2013', 9.50
UNION ALL
SELECT 'Item1', '03/01/2013', 0
UNION ALL
SELECT 'Item1', '04/01/2013', 7.50
UNION ALL
SELECT 'Item1', '05/01/2013', 0.00
UNION ALL
SELECT 'Item1', '06/01/2013', 0.00
UNION ALL
SELECT 'Item1', '07/01/2013', 11.00
UNION ALL
SELECT 'Item2', '01/01/2013', 0.00
UNION ALL
SELECT 'Item2', '02/01/2013', 12.00
UNION ALL
SELECT 'Item2', '03/01/2013', 0.00
UNION ALL
SELECT 'Item2', '04/01/2013', 0.00
UNION ALL
SELECT 'Item2', '05/01/2013', 13.00
)TAB
结果查询
SELECT [Item Name],[Date],
CASE WHEN [Price]=0 THEN
ISNULL((SELECT TOP 1 [Price]
FROM #TEMP T2
WHERE CAST(T2.[Date] AS DATE)<T1.[Date] AND T1.[Item Name]=T2.[Item Name] AND T2.[Price]>0
ORDER BY CAST(T2.[Date] AS DATE) DESC),0)
ELSE [Price] END [Price]
FROM #TEMP T1
您的结果在这里
这是工作小提琴http://sqlfiddle.com/#!3/afabd/1(如果它在加载页面上显示任何错误,请按RUNSQL,它会起作用)