SQL: Как показать все даты между заданным диапазоном? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть табличная функция, которая возвращает что-то вроде этого:

enter image description here

Теперь у меня есть диапазон дат в качестве параметра, скажем, '2020-03-01' и '2020-04-15'
Я хочу также добавить столбец, который отображает всю дату от '2020-03-01' вверх на '2020-04-15'
Это должно выглядеть следующим образом:

    Overtime          | Status               | DTR        | DATE_START    |   DATE
    1.  NULL          | NULL                 | NULL       | NULL          | 2020-03-01
    2.  NULL          | NULL                 | NULL       | NULL          | 2020-03-02
    ...
    ...
    ...
    30. 6:32PM-9:32PM | Pending For Approval | NULL       | 2020-03-30    | 2020-03-30
    ...
    ...
    ...

Мой код выглядит следующим образом, Не обращайте внимания на 95476237 :

SELECT CAST(a.IndividualDate as date)
FROM DateRange('d', @start, @end) as a 
LEFT JOIN support.dbo.overtimeReport('95476237', @start, @end) as b on CAST(a.IndividualDate as date) = CAST(b.DATE_START as date)

В результате я получил только это,

enter image description here

ОБНОВЛЕНИЕ: Маленькая ошибка, я забыл упомянуть остальные столбцов в инструкции SELECT. Благодаря @ iamdave

1 Ответ

1 голос
/ 30 марта 2020

Вам просто нужно добавить все столбцы, которые вы хотите вывести в ваш оператор select. Остальная часть запроса выглядит нормально (игнорируя все неприятные запахи выбора из TVF и использования cast по обе стороны от ваших join критериев ...):

SELECT b.Overtime
      ,b.Status
      ,b.DTR
      ,DATE_STARTCAST(a.IndividualDate as date) AS [Date]
FROM DateRange('d', @start, @end) as a 
LEFT JOIN support.dbo.overtimeReport('95476237', @start, @end) as b
    ON CAST(a.IndividualDate as date) = CAST(b.DATE_START as date)

Кроме того, пожалуйста, не используйте псевдонимы для ваших таблиц a, b, c et c. Используйте что-то, что фактически говорит любому, кто читает этот код, на какую таблицу ссылаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...