以下是我们提出的解决方案 - 分享给其他可能受益的人。
*下面使用的命名约定似乎很愚蠢,但我这样做是因为我正在重写基于水晶表的报告,并且我不想从头开始,所以我命名了在 proc 中易于识别的字段,并且使用“设置数据源位置”来更新每个表以使用存储的 proc 字段 - 这样可以节省大量时间!
( @FROMDATE SMALLDATETIME, -- = '2015-06-28'
@TODATE SMALLDATETIME) --= '2015-07-04'
--@FROMDATE DECIMAL(9,0),
--@TODATE DECIMAL(9,0)
AS
--SET DECLARATIONS
DECLARE @FROM AS DECIMAL(9,0)
DECLARE @TO AS DECIMAL(9,0)
--SET VARIABLES
SET @FROM = CAST(STR(DATEPART(YEAR, @FROMDATE),4) + REPLACE(STR(DATEPART(MONTH, @FROMDATE), 2), ' ', '0') + REPLACE(STR(DATEPART(DAY, @FROMDATE), 2), ' ', '0') AS DECIMAL(9,0))
SET @TO = CAST(STR(DATEPART(YEAR, @TODATE),4) + REPLACE(STR(DATEPART(MONTH, @TODATE), 2), ' ', '0') + REPLACE(STR(DATEPART(DAY, @TODATE), 2), ' ', '0') AS DECIMAL(9,0))
BEGIN
--SET NOCOUNT ON added to prevent extra result sets from
--interfering with SELECT statements.
SET NOCOUNT ON;
--Insert statements for procedure here
SELECT
UPH.TRANSDATE,
@from,
@to,
@FROMDATE,
@TODATE,
UPD.[EMPLOYEE] as 'UPCHKD.EMPLOYEE'
,UPD.EXPACCT AS 'UPCHKD.EXPACCT'
,SUBSTRING(UPD.EXPACCT, 6,2) LEXPACCT
,GL.ACCTFMTTD AS 'GLAMF.ACCTFMTTD'
,GL.ACCTDESC AS 'GLAMF.ACCTDESC'
,UPD.EARNDED AS 'UPCHKD.EARNDED'
,UPD.EARDEDTYPE AS 'UPCHKD.EARDEDTYPE'
,UPD.EEXTEND AS 'UPCHKD.EEXTEND'
,UPD.[HOURS] AS 'UPCHKD.HOURS'
,UPD.LINETYPE AS 'UPCHKD.LINETYPE'
,UPD.PEREND AS 'UPCHKD.PEREND'
,UPH.CHECKSTAT AS 'UPCHKH.CHECKSTAT'
,UPH.TRANSDATE AS 'UPCHKH.TRANSDATE'
,UPT.SHIFTACCT AS 'UPDIST.SHIFTACCT'
,UPE.FULLNAME AS 'UPEMPL.FULLNAME'
,UPD.[ENTRYSEQ] AS 'UPCHKD.ENTRYSEQ'
FROM [ISSDAT].[dbo].[UPCHKD] UPD
LEFT JOIN [ISSDAT].[dbo].[GLAMF] GL ON UPD.EXPACCT = GL.ACCTFMTTD
LEFT JOIN [ISSDAT].[dbo].[UPCHKH] UPH ON UPD.EMPLOYEE = UPH.EMPLOYEE AND UPD.ENTRYSEQ = UPH.ENTRYSEQ AND UPD.PEREND = UPH.PEREND
LEFT JOIN [ISSDAT].[dbo].[UPEMPL] UPE ON UPE.EMPLOYEE = UPD.EMPLOYEE
LEFT JOIN [ISSDAT].[dbo].[UPDTLM] UPM ON UPM.EARNDED = UPD.EARNDED
LEFT JOIN [ISSDAT].[dbo].[UPDIST] UPT ON UPT.EARNDED = UPD.EARNDED AND UPT.EXPACCT = UPD.EXPACCT
where UPH.CHECKSTAT <> '4' AND UPH.TRANSDATE >= @FROM AND UPH.TRANSDATE < @TO
AND UPD.EEXTEND > 0.00 AND UPD.[HOURS] > 0.00 AND UPD.EXPACCT NOT LIKE '66400%'
AND substring(UPD.EXPACCT, 6,2) IN ('-1', '-2', '-3', '-4', '-5', '-6', '-7')