0
Я пытаюсь получить последнюю дату окончания (ProjectsTasksEndDate
) из проекта и группы задачи без успеха. Ниже перечислены SQLFiddle. Какие-либо предложения?Группа с использованием MAX()
PS .: Прокомментированный выбор был базой для построения выбора, к которому я пытаюсь добраться.
сервера Настройка MS SQL 2008 схемы:
CREATE TABLE Projects
(
id int identity primary key,
ProjectID varchar(20),
ProjectStartDate date,
ProjectEndDate date
);
CREATE TABLE ProjectsTasks
(
id int identity primary key,
ProjectID varchar(20),
ProjectsTasksStartDate date,
ProjectsTasksEndDate date
);
INSERT INTO Projects
(ProjectID, ProjectStartDate, ProjectEndDate)
VALUES
('1', '2015-01-05', '2015-04-08'),
('2', '2015-01-06', '2015-07-20'),
('3', '2015-02-05', '2015-07-22'),
('4', '2015-03-05', '2015-08-08'),
('5', '2015-03-05', '2015-09-18'),
('6', '2015-04-05', '2015-10-02'),
('7', '2016-07-05', '2016-11-20');
INSERT INTO ProjectsTasks
(ProjectID, ProjectsTasksStartDate, ProjectsTasksEndDate)
VALUES
('1', '2015-01-05', '2015-01-10'),
('1', '2015-01-06', '2015-02-20'),
('1', '2015-02-05', '2015-03-20'),
('1', '2015-03-01', '2015-03-02'),
('1', '2015-01-05', '2015-04-08'),
('2', '2015-06-01', '2015-06-20'),
('3', '2015-12-20', '2015-12-21');
Запрос 1:
/*
SELECT
YEAR (Projects.ProjectEndDate) AS [Year],
MONTH (Projects.ProjectEndDate) AS [Month],
COUNT (*) AS [Total]
FROM
Projects
GROUP BY
YEAR (Projects.ProjectEndDate),
MONTH (Projects.ProjectEndDate)
*/
SELECT
YEAR (MAX(ProjectsTasks.ProjectsTasksEndDate)) AS [Year],
MONTH (MAX(ProjectsTasks.ProjectsTasksEndDate)) AS [Month],
COUNT (*) AS [Total]
FROM Projects
RIGHT JOIN ProjectsTasks
ON Projects.ProjectID = ProjectsTasks.ProjectID
GROUP BY YEAR (ProjectsTasks.ProjectsTasksEndDate),
MONTH (ProjectsTasks.ProjectsTasksEndDate)
[Ожидаемые результаты]:
| Year | Month | Total |
|------|-------|-------|
| 2015 | 4 | 1 |
| 2015 | 6 | 1 |
| 2015 | 12 | 1 |
Я только что обновил оригинальный пост. В этом случае я наблюдаю только одну строку, потому что я ищу самую последнюю дату окончания задачи. Спасибо за твой. – Khrys
@Khrys См. Обновленный – lad2025
Ну, это был всего лишь пример. В реальном случае я не могу использовать TOP 1, потому что будут другие проекты, а не только один. – Khrys