입력 매개변수를 기반으로 Datetime 값을 사용하여 SQL 테이블 필드 자동 채우기
질문:
내 SQL 테이블에 날짜 필드가 하나 있다.count를 변수로 하고 표를 기록하는 과정을 만들었습니다.숫자가 5이면 5개의 레코드가 생성됩니다.내가 원하는 논리는 내가 5를 입력 매개 변수로 제공할 때, 표의datetime 필드는 자동으로 값을 채워야 한다는 것이다12/20/2015 9:00
12/20/2015 11:00
12/20/2015 13:00
12/20/2015 15:00
12/20/2015 17:00
따라서 기록을 표에 삽입할 때마다 2시간의 시간을 추가해야 한다.답안
귀속CTEs은 동적 기록을 만드는 방법의 하나이다.여기서 관건은 닻을 만드는 것입니다. (이것은 CTE 내부의 첫 번째 선택이고, 이것은 당신의 시작점입니다.)및 체크아웃(WHERE 자문)100개 이상의 기록을 한 번에 작성하려면 MAXRECURSION을 읽으십시오.
예.
DECLARE @RecordsRequired INT = 5;
DECLARE @BaseDateTime SMALLDATETIME = GETDATE();
WITH [Sample] AS
(
/* This CTE uses recursion to create the required number of
* records.
*/
SELECT
1 AS RowNumber,
@BaseDateTime AS [DateTime]
UNION ALL
SELECT
RowNumber + 1 AS RowNumber,
DATEADD(HOUR, 2, [DateTime]) AS [DateTime]
FROM
[Sample]
WHERE
RowNumber < @RecordsRequired
)
SELECT
RowNumber,
[DateTime]
FROM
[Sample]
;
WHILE 블록도 볼 수 있습니다.