SQL - вставка нескольких строк на основе одной записи с условиями - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно вставить несколько строк на основе одной записи в Таблице A в Таблицу B. Запрос должен получать каждый день от даты начала и окончания в Таблице A и проверять, является ли это рабочим днем.Если это нерабочие дни (выходные), он не будет включен в таблицу B.

Сценарий, как показано ниже:

Table A:

+ LID + Start_Date +  End_Date  +  Working_Day  + Total_Days
------------------------------------------------------------
| 101 | 1-Jan-18   | 5-Jan-2018 |       Yes     |     5    |


Table B (Expected Result):

+ LID + Start_Date +  End_Date  +
---------------------------------
| 101 | 1-Jan-18   | 1-Jan-2018 |
| 101 | 2-Jan-18   | 2-Jan-2018 |
| 101 | 3-Jan-18   | 3-Jan-2018 |
| 101 | 4-Jan-18   | 4-Jan-2018 |
| 101 | 5-Jan-18   | 5-Jan-2018 |

1 Ответ

0 голосов
/ 17 мая 2018

Если я правильно понимаю, вы можете расширить данные с помощью рекурсивного CTE, а затем отфильтровать выходные дни:

with cte as (
      select ltd, start_date, end_date, 
      from a
      union all
      select ltd, date_add(day, 1, start_date), end_date
      from cte
      where start_date < end_date
     )
select ltd, start_date, end_date
from cte
where datename(weekday, start_date) not in ('Saturday', 'Sunday');
...