22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @round INT
SELECT @round = 10
WHILE @round > 0
BEGIN
SELECT
*
FROM
t_project p
WHERE
p.id = 1263
SET @round = @round - 1 ;
--问题出在这里
IF @round != 1
BEGIN
UNION ALL
END
END
ALTER PROC p_agreementError @agreement_project_id int
AS
DECLARE @round INT ,@start DATE
if (SELECT (DATEDIFF(DAY,ap.start_date,ap.end_date) % ap.photoperiod) FROM t_agreement_project ap WHERE ap.id = @agreement_project_id) > 0
BEGIN
SELECT @round = (DATEDIFF(DAY,ap.start_date,ap.end_date) / ap.photoperiod) + 1 FROM t_agreement_project ap WHERE ap.id = @agreement_project_id
END
ELSE
BEGIN
SELECT @round = (DATEDIFF(DAY,ap.start_date,ap.end_date) / ap.photoperiod) FROM t_agreement_project ap WHERE ap.id = @agreement_project_id
END
SELECT @start = ap.start_date FROM t_agreement_project ap WHERE ap.id = @agreement_project_id
WHILE @round > 0
BEGIN
INSERT INTO t_agreement_error (agreementid,agreementprojectid,start_date,end_date,agreementerror)
SELECT a.id,ap.id,@start,(SELECT DATEADD(DAY, ap.photoperiod, @start) FROM t_agreement_project ap WHERE ap.id = @agreement_project_id),
(CASE WHEN p.photo_time BETWEEN @start AND DATEADD(DAY, ap.photoperiod, @start) THEN '正常' ELSE '异常' END)
FROM t_agreement a
LEFT JOIN t_agreement_project ap ON a.id = ap.agreement_id
LEFT JOIN t_photograph p ON ap.id = p.agreement_projectid
WHERE
ap.id = @agreement_project_id and @start < GETDATE()
--(p.id is null and @start < ap.end_date)
--or
--(p.photo_time BETWEEN @start AND DATEADD(DAY, ap.photoperiod, @start) and @start < ap.end_date)
SELECT @start = DATEADD(DAY, ap.photoperiod, @start) FROM t_agreement_project ap WHERE ap.id = @agreement_project_id
SET @round = @round - 1
END