Я искал какое-то время, и я не могу найти ответ на этот вопрос (возможно, я не ищу правильные термины или что-то в этом роде). В принципе, у меня есть база данных, которая имеет любое количество записей за дату. Мне нужно взять сумму последних X дней, содержащих записи (игнорируя дни, у которых нет записей). Я знаю, как найти суммы за каждый день.SQL Сумма последнего X Сумма записей
Скажет, у меня есть таблица под названием "Выход":
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) дней, что c получать записи и возвращать сумму столбцов 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
Я понимаю, что это совершенно неправильно, но я не могу понять, как заставить его работать.
Если я что-то не хватает, кажется мне «GROUP BY» пункт может упростить вашу жизнь много. – hometoast
, так что вам нужны суммы за последние 100 дат .. не обязательно суммы на даты в течение 100 дней? – hometoast