しばらく探しましたが、この質問に対する答えが見つかりません (正しい用語などを検索していない可能性があります)。基本的に、日付ごとに任意の数のエントリを持つデータベースがあります。エントリを含む最後の 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
1 日あたりの合計通過/測定値を取得するには:
Date NumMeasured NumPassing
2013-03-29 11 1
2013-03-30 26 2
2013-03-31 36 3
2013-04-05 30 3
次に、エントリを含む最後の X 日 (たとえば 100 日) を取得し、その数の NumMeasured 列と NumPassing 列の合計を返す日付 (4/05 に呼び出すとします) で呼び出すことができるクエリが必要になります。日々。この部分を機能させることができません。解決するのに十分な経験がない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
これが完全に間違っていることはわかっていますが、それを機能させる方法が本当にわかりません。