SELECT *
FROM tasks
LEFT JOIN plans
ON plans.task_id = tasks.id
WHERE plan.week IS NULL OR (plan.week < DATEPART(week, GetDate()) AND plan.Year = YEAR(GETDATE())
SELECT *, , . , , . #, .
, ??? , ?
SELECT *
FROM tasks
LEFT JOIN plans
ON plans.task_id = tasks.id
WHERE tasks.description = 'Past' OR tasks.description = 'Not planned'
. , , . , , MAX ( #) GROUP BY task, , , ...
CREATE TABLE
(
TaskID int,
TaskYear int,
TaskWeek int
)
INSERT INTO
VALUES (1, 2012, 4)
INSERT INTO
VALUES (2, 2012, 5)
INSERT INTO
VALUES (2, 2012, 36)
INSERT INTO
VALUES (3, 2012, 36)
INSERT INTO
VALUES (4, 2012, NULL)
INSERT INTO
VALUES (6, 2011, 5)
INSERT INTO
VALUES (6, 2010, 36)
SELECT
TaskID,
MAX(TaskWeek) AS WeekNumber,
TaskYear
FROM
GROUP BY
TaskID,
TaskWeek,
TaskYear
HAVING MAX(TaskWeek) < DatePart(week, GetDate()) OR MIN(TaskWeek) IS NULL
DROP TABLE
task.id .
:
sql, :
CREATE TABLE
(
TaskID int,
TaskDate datetime
)
INSERT INTO
VALUES (1, '1998-01-01')
INSERT INTO
VALUES (3, '2012-12-24')
INSERT INTO
VALUES (4, null)
INSERT INTO
VALUES (6, '2011-12-23')
INSERT INTO
VALUES (6, '2012-12-23')
INSERT INTO
VALUES (8, '2012-1-23')
INSERT INTO
VALUES (8, '2012-6-23')
SELECT
TaskID,
YEAR(TaskDate) AS TheYear,
DatePart(week, TaskDate) AS WeekNumber
FROM
WHERE
((TaskDate IS NULL)
OR TaskID NOT IN (SELECT TaskID FROM
GROUP BY
TaskID,
Year(TaskDate),
DatePart(week, TaskDate)
DROP TABLE