我们有一个存储过程,它从几个不同的表中提取信息以显示一些信息。这很好用。
我们现在想要"借用"一些代码和我试图做一些开发工作。当我将存储过程的内容复制到查询窗口并运行它(减去存储过程相关的东西)时,它成功完成但没有返回结果 - 实际上#test2没有填充。通过存储过程运行相同的结果通常会返回结果。
代码位于查询下方 - 存储过程与ALTER PROCEDURE
相同,我更改了所有表名等...
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DECLARE @reportstart smalldatetime, @reportend smalldatetime
SET @reportend = 2016-01-01
SET @reportstart = 2016-02-01
SET NOCOUNT ON;
SELECT
OPA10.[PATIENT PATHWAY IDENTIFIER], OPA10.RTTPeriod
INTO #TEST
FROM
(SELECT
PL.[PATIENT PATHWAY IDENTIFIER], PL.RTTPERIOD
FROM
[PATHWAY LTR] AS PL
INNER JOIN
[PATHWAY LTR] AS PL2 ON PL.[PATIENT PATHWAY IDENTIFIER] = PL2.[PATIENT PATHWAY IDENTIFIER]
AND PL.LTRSequence = PL2.LTRSequence +1
INNER JOIN
[PATIENT PATHWAY] AS PP ON PL.[PATIENT PATHWAY IDENTIFIER] = PP.[PATIENT PATHWAY IDENTIFIER]
WHERE
PL.ActivityType = 'OPD'
AND PL.LTRSequence = 3
AND (PL2.OPDisposal IN ('05', '08')
OR PL2.ActivityStatus IN ('DNA', 'CND'))) OPA10
SELECT DISTINCT
[PATIENT PATHWAY].[LOCAL PATIENT IDENTIFIER],
[RTT PERIOD].[PATIENT PATHWAY IDENTIFIER], pd.Surname,
[RTT PERIOD].[RTT PERIOD ID WITHIN PATHWAY],
CAST([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD START DATE] AS DATE) as 'RTT START DATE',
CAST([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE] AS DATE) AS 'RTT END DATE',
[RTT PERIOD].[RTT SPECIALTY],
CAST(DATEADD(D,126,[RTT PERIOD].[REFERRAL TO TREATMENT PERIOD START DATE])AS DATE) AS 'BREACH DATE',
'BREACH FLAG' = CASE
WHEN CAST(DATEADD(D, 126, [RTT PERIOD].[REFERRAL TO TREATMENT PERIOD START DATE]) AS DATE) < CAST([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE] AS DATE)
THEN 'NOT WITHIN'
ELSE 'WITHIN'
END,
--DATEDIFF(DD, CAST([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD START DATE] as date),
--CAST([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE] AS date)) AS UNADJWAITDAYS,
[RTT PERIOD].[RTT CLOCK STOP ACTIVITY],
[RTT PERIOD].[RTT CLOCK STOP ACTIVITY STATUS],
[RTT PERIOD].[RTT COMMISSIONER], [RTT PERIOD].[SHARED BREACH],
[PATIENT PATHWAY SITE].[18WKSITE],
[MERGE SPECIALTY].[DESCRIPTION],
[MERGE SPECIALTY].[MERGE SPECIALTY],
--,WLREMOVAL.Comment
--,[PATHWAY LTR].[InternalPatientNumber(iSOFT-PAS)]
--,[PATHWAY LTR].[InternalEpisodeNumber(iSOFT-PAS)]
--,[PATHWAY LTR].EpsActvDtime
[PATHWAY LTR].LTRSequence,
[PATIENT PATHWAY SITE].[18WK provider]
INTO
#TEST2
FROM
[RTT PERIOD]
/* ************************
THIS CODE HAS BEEN ADDED TO GET THE SITE FLAG
************************/
INNER JOIN
[PATIENT PATHWAY SITE] ON [RTT PERIOD].[PATIENT PATHWAY IDENTIFIER] = [PATIENT PATHWAY SITE].[PATIENT PATHWAY IDENTIFIER]
/****************************************/
INNER JOIN
[PATIENT PATHWAY] ON [RTT PERIOD].[PATIENT PATHWAY IDENTIFIER] = [PATIENT PATHWAY].[PATIENT PATHWAY IDENTIFIER]
INNER JOIN
[PATHWAY LTR] ON [RTT PERIOD].[PATIENT PATHWAY IDENTIFIER] = [PATHWAY LTR].[PATIENT PATHWAY IDENTIFIER]
--and [RTT PERIOD].[RTT PERIOD ID WITHIN PATHWAY] = [PATHWAY LTR].RTTActivityID
--and [PATHWAY LTR].RTTActivityID = 1
AND [PATHWAY LTR].EpsActvDtime = [RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE]
--left outer join [iSOFT-PAS_Landing].dbo.WLREMOVAL on
--[PATHWAY LTR].[InternalPatientNumber(iSOFT-PAS)] = WLREMOVAL.InternalPatientNumber
--and [PATHWAY LTR].EpsActvDtime = WLREMOVAL.EpsActvDtimeInt
INNER JOIN
[iSOFT-PAS_Landing].dbo.PATDATA as PD ON [PATIENT PATHWAY].[InternalPatientNumber(iSOFT-PAS)] = PD.InternalPatientNumber
LEFT OUTER JOIN
[18-Weeks].dbo.[MERGE SPECIALTY] ON [MERGE SPECIALTY].[RTT SPECIALTY] = [RTT PERIOD].[RTT SPECIALTY]
WHERE
([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE] >= @reportstart)
AND ([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE] < @reportend )
AND ([RTT PERIOD].[RTT PERIOD TYPE] = 'N')
AND ([RTT PERIOD].[REFERRAL TO TREATMENT STATUS AT END OF PERIOD]) <>'33'
AND ([RTT PERIOD].[RTT CLOCK STOP ACTIVITY]) <> 'opd'
AND ([PATHWAY LTR].[ActivityType]) <> 'WADD'
AND ([RTT PERIOD].[RTT PERIOD ID WITHIN PATHWAY]) =1
--and [PATIENT PATHWAY SITE].[18WK provider]='RN700'
OR ([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE] >= @reportstart)
AND ([RTT PERIOD].[REFERRAL TO TREATMENT PERIOD END DATE] < @reportend)
AND ([RTT PERIOD].[RTT PERIOD TYPE] = 'N')
AND ([RTT PERIOD].[REFERRAL TO TREATMENT STATUS AT END OF PERIOD]) <>'33'
AND ([RTT PERIOD].[RTT CLOCK STOP ACTIVITY]) <> 'opd'
AND ([PATHWAY LTR].[ActivityType]) = 'book'
AND ([RTT PERIOD].[RTT PERIOD ID WITHIN PATHWAY]) = 2
--and [PATIENT PATHWAY SITE].[18WK provider]='RN7
SELECT t2.*
FROM #TEST2 AS T2
LEFT OUTER JOIN #TEST AS T ON T2.[PATIENT PATHWAY IDENTIFIER] = T.[PATIENT PATHWAY IDENTIFIER]
AND T2.[RTT PERIOD ID WITHIN PATHWAY] = T.RTTPeriod
WHERE
t.[PATIENT PATHWAY IDENTIFIER] IS NULL
select * from #TEST
select * from #TEST2
-- drop table #TEST2
-- drop table #TEST
答案 0 :(得分:2)
您需要使用'
引用日期:
DECLARE @reportstart smalldatetime, @reportend smalldatetime;
SET @reportend = '2016-01-01';
SET @reportstart = '2016-02-01';
否则,您将获得从INT
到DATE
的隐式转换,即1905年。
的 LiveDemo
强>
它与此类似:
SET @reportend = 2016-01-01;
--SET @reportend = 2014 -- int
--SET @reportend = DATEADD(d, 2014,'1900-01-01')
--SET @reportend = '1905-07-08 00:00:00'
我非常怀疑你有来自1905