См. Это http://sqlfiddle.com/#!18/8fe2a/13
У меня есть таблицы
CREATE TABLE Figure(
MonthNumber varchar(10),
Code varchar(10),
Figure int
);
INSERT INTO Figure (MonthNumber, Code, Figure)
VALUES ('5', 'S', '25'),
('5','G', '30');
CREATE TABLE Other(
MonthNumber varchar(10),
Code varchar(10),
Figure int
);
INSERT INTO Other (MonthNumber, Code, Figure)
VALUES ('5', 'S', '25'),
('5','G', '30'),
('4','K', '40'),
('3','D', '20'),
('2','J', '25');
Запрос:
SELECT * FROM
Figure f1
RIGHT JOIN
Other O
ON F1.[Code] = O.[Code]
OR
o.[MonthNumber] = MONTH(GETDATE())-1
WHERE f1.[MonthNumber] = MONTH(GETDATE())
Результат:
| MonthNumber | Code | Figure | MonthNumber | Code | Figure |
|-------------|------|--------|-------------|------|--------|
| 5 | S | 25 | 5 | S | 25 |
| 5 | S | 25 | 4 | K | 40 |
| 5 | G | 30 | 5 | G | 30 |
| 5 | G | 30 | 4 | K | 40 |
Тем не менее, я ищу результаты этого месяца, но также включаю людей, у которых, возможно, была цифра за предыдущие месяцы, но не за этот месяц.
Желаемый результат:
| MonthNumber | Code | Figure |
|-------------|------|--------|
| 5 | S | 25 |
| 5 | G | 25 |
| 5 | K | 0 |
| 5 | D | 0 |
| 5 | J | 0 |
Я не могу понять, что мне нужно в соединении. Любая помощь будет оценена.