我已经寻找一段时间了,但是找不到这个问题的答案(也许我没有搜索正确的术语)。基本上,我有一个数据库,每天可能会有任意数量的条目。我需要对包含条目的最后X天求和(忽略没有条目的日期)。我知道如何找到每天的总和。
假设我有一个名为"Yield"的表:
UnitID Date TestTime NumMeasured NumPassing
1 2013-04-05 10:15 25 3
2 2013-03-31 10:12 30 1
3 2013-03-30 10:12 26 2
4 2013-03-29 10:30 11 1
5 2013-03-31 10:20 6 2
6 2013-04-05 10:30 5 0
我随后使用以下查询:
SELECT DISTINCT
Date,
(
SELECT SUM([NumMeasured])
FROM [dbo].[Yield] T1
WHERE T1.Date = T2.Date
) AS 'NumMeasured',
(
SELECT SUM([NumPassing])
FROM [dbo].[Yield] T1
WHERE T1.Date = T2.Date
) AS 'NumPassing'
FROM [dbo].[Yield] T2
获取每天的总通过/测量数:
Date NumMeasured NumPassing
2013-03-29 11 1
2013-03-30 26 2
2013-03-31 36 3
2013-04-05 30 3
我需要一个查询语句,可以根据日期(比如说4/05)获取最近X天(比如说100天)内包含记录的NumMeasured和NumPassing列的总和。但是我无法让这部分代码正常运行,一直遇到SQL问题,而我没有足够的经验来解决。我需要像下面这样的代码:
SELECT
(
SELECT TOP 100 SUM(T3.[NumMeasured])
FROM T3
WHERE T3.Date <= '4/05/2013'
ORDER BY T3.Date
) AS 'NumMeasured',
(
SELECT TOP 100 SUM(T3.[NumPassing])
FROM T3
WHERE T3.Date <= '4/05/2013'
ORDER BY T3.Date
) AS 'NumPassing',
(
SELECT DISTINCT
Date,
(
SELECT SUM([NumMeasured])
FROM [PhaseNoiseMonitoring].[dbo].[Yield] T1
WHERE T1.Date = T2.Date
) AS 'NumMeasured',
(
SELECT SUM([NumPassing])
FROM [PhaseNoiseMonitoring].[dbo].[Yield] T1
WHERE T1.Date = T2.Date
) AS 'NumPassing'
FROM [PhaseNoiseMonitoring].[dbo].[Yield] T2
)
AS T3
预期的查询将返回:
NumMeasured NumPassing
103 9
我知道这样做是错误的,但我真的不知道该怎么让它工作。