首先,我爲大塊代碼表示歉意。這基本上是一個包含4個select語句的表(每個語句都有一個不同的[Lag_Error]),然後將它們聯合起來創建一個錯誤報告。提供所需的錯誤報告幫助
我的老闆正在對我這個(她)的代碼進行更改。我需要這個錯誤報告來捕捉[a.region ='CR'和a.eff_date ='4/1/2016')[Lag Error]應該顯示'滯後應該是1'(就像從第一個選擇語句) 。我能夠通過在最後使用更新語句來實現這一點,但她表示我需要回頭查看代碼並對每條select語句進行更改以完成此操作。
因此,對於具有(區域CR和eff_date> = 2016年4月1日)的[Lag_Error]應該讀「滯後,應爲1」
可以在任何幫助我的任何記錄?我試圖刪除所有註釋,以便適應所有情況並避免在代碼中使用羣集,因爲註釋在跟蹤代碼時沒有幫助。這可能會導致語法錯誤。爲此,我表示歉意。
CREATE TABLE [usr].[#AFF_LAG]
(
[OP_NO] [varchar] NULL,
[PROV_NO] [varchar] (12) NOT NULL,
[AFF_NO] [varchar] (16) NOT NULL,
[EFF_DATE] [datetime] NULL,
[END_DATE] [datetime] NULL,
[LAG] [int] NULL,
[Lag_Error] [varchar] (50) NULL,
[STATUS] [varchar] (2) NULL,
[Prov_Name] [varchar] (60) NULL,
[REGION] [varchar] (2) NULL,
[SPEC_1] [varchar] (2) NULL,
[DESCRIPTION] [char] (72) NULL,
[IRS_NO] [varchar] (10) NULL)
ON [PRIMARY]
SELECT DISTINCT a.OP_NO,
a.PROV_NO,
a.AFF_NO,
a.eff_date,
a.end_Date,
a.lag,
'Lag should be 1' AS Lag_Error,
a.status,
b.First_Name + ' ' + b.Last_Name AS [Prov_Name],
Region,
a.Spec_1,
[description],
a.IRS_NO
INTO #templag2
FROM amisys.dbo.affiliation a
INNER JOIN amisys.dbo.provider b ON a.prov_no = b.prov_no
LEFT OUTER JOIN amisys.dbo.code_detail cd
ON a.spec_1 = cd.code_no AND prefix = 'sp'
WHERE a.end_date = '12/31/9999'
AND a.void = ' '
AND a.lag <> 1
AND b.prov_no <> '1000001395'
AND ( (a.spec_1 = 'ca' AND region = 'ni')
OR (a.spec_1 = 'FN' AND region = 'S1')
OR (a.spec_1 = 'FN' AND region = 'SD')
OR (a.spec_1 = 'FN' AND region = 'WC')
OR (a.spec_1 = 'FN' AND region = 'WJ')
OR a.prov_no = '100064886'
OR ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region = 'SI')
OR ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region = 'wj')
OR ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region IN ('GC','WC'))
OR a.irs_no = '274630894'
OR a.irs_no = '010940346'
OR ( a.prov_no IN ('1000009816',
'1000011878',
'436211363SC1',
'720204265TE1',
'720914714PE1',
'720975722CE1')
AND a.region = 'pn')
OR a.irs_no = '452829073'
OR a.prov_no IN ('0001',
'0002',
'0003',
'0004',
'0005',
'0006',
'0007',
'0008',
'0009',
'0010',
'0011')
AND NOT a.prov_no = '100067743')
SELECT DISTINCT a.OP_NO,
a.PROV_NO,
a.AFF_NO,
a.eff_date,
a.end_Date,
a.lag,
'Lag should be 30' AS Lag_Error,
a.status,
b.First_Name + ' ' + b.Last_Name AS [Prov_Name],
Region,
a.Spec_1,
[description],
a.IRS_NO
INTO #templag3
FROM amisys.dbo.affiliation a
INNER JOIN amisys.dbo.provider b ON a.prov_no = b.prov_no
LEFT OUTER JOIN amisys.dbo.code_detail cd
ON a.spec_1 = cd.code_no AND prefix = 'sp'
WHERE a.end_date = '12/31/9999'
AND a.void = ' '
AND b.prov_no <> '1000001395'
AND a.lag <> 30
AND NOT ( (a.spec_1 = 'ca' AND region = 'ni')
OR (a.spec_1 = 'ca' AND region = 'ui')
OR (a.spec_1 = 'ca' AND region = 'CI')
OR (a.spec_1 = 'ca' AND region = 'SI')
OR (a.spec_1 = 'ca' AND region = 'wj')
OR (a.spec_1 = 'CA' AND region = 'GC')
OR (a.spec_1 = 'CA' AND region = 'WC')
OR (a.spec_1 = 'OB' AND region = 'WJ'))
and not a.prov_no = '100064886'
AND NOT ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region = 'SI')
AND NOT ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region = 'wj')
AND NOT ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region IN ('GC','WC'))
AND NOT a.prov_no = '720478620ST1'
AND NOT a.irs_no IN ('201729674',
'205432631',
'205432782',
'271770321',
'720276883',
'720502505',
'721473968',
'204670876')
AND NOT ( a.prov_no IN ('1000009816',
'1000011878',
'436211363SC1',
'720204265TE1',
'720914714PE1',
'720975722CE1')
AND a.region = 'pn')
AND NOT a.irs_no = '452829073'
AND NOT a.prov_no IN ('0001',
'0002',
'0003',
'0004',
'0005',
'0006',
'0007',
'0008',
'0009',
'0010',
'0011')
AND NOT a.prov_no = '100067743'
SELECT DISTINCT a.OP_NO,
a.PROV_NO,
a.AFF_NO,
a.eff_date,
a.end_Date,
a.lag,
'Lag should be 25' AS Lag_Error,
a.status,
b.First_Name + ' ' + b.Last_Name AS [Prov_Name],
Region,
a.Spec_1,
[description],
a.IRS_NO
INTO #templag4
FROM amisys.dbo.affiliation a
INNER JOIN amisys.dbo.provider b ON a.prov_no = b.prov_no
LEFT OUTER JOIN amisys.dbo.code_detail cd
ON a.spec_1 = cd.code_no AND prefix = 'sp'
WHERE a.end_date = '12/31/9999'
AND a.void = ' '
AND a.lag <> 25
AND a.prov_no = '720478620ST1'
AND NOT a.prov_no = '100067743'
SELECT DISTINCT a.OP_NO,
a.PROV_NO,
a.AFF_NO,
a.eff_date,
a.end_Date,
a.lag,
'Lag should be 21' AS Lag_Error,
a.status,
b.First_Name + ' ' + b.Last_Name AS [Prov_Name],
Region,
a.Spec_1,
[description],
a.IRS_NO
INTO #templag5
FROM amisys.dbo.affiliation a
INNER JOIN amisys.dbo.provider b ON a.prov_no = b.prov_no
LEFT OUTER JOIN amisys.dbo.code_detail cd
ON a.spec_1 = cd.code_no AND prefix = 'sp'
WHERE a.end_date = '12/31/9999'
AND a.void = ' '
AND b.prov_no <> '1000001395'
AND a.lag <> '21'
AND ( a.irs_no IN ('201729674',
'205432631',
'205432782',
'271770321',
'720276883',
'720502505',
'721473968',
'204670876')
OR b.prov_no = '0012')
AND NOT ( (a.spec_1 = 'ca' AND region = 'ni')
OR (a.spec_1 = 'ca' AND region = 'ui')
OR (a.spec_1 = 'ca' AND region = 'CI')
OR (a.spec_1 = 'FN' AND region = 'WJ'))
and not a.prov_no = '100064886'
AND NOT ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region = 'SI')
AND NOT ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region = 'WJ')
AND NOT ( a.prov_no IN ('100070539', '721313430ST1')
AND a.region IN ('GC','WC'))
AND NOT a.prov_no = '720478620ST1'
AND NOT a.irs_no = '274630894'
AND NOT a.irs_no = '010940346'
AND NOT ( a.prov_no IN ('1000009816',
'1000011878',
'436211363SC1',
'720204265TE1',
'720914714PE1',
'720975722CE1')
AND a.region = 'pn')
AND NOT a.irs_no = '452829073'
AND NOT a.prov_no IN ('0001',
'0002',
'0003',
'0004',
'0005',
'0006',
'0007',
'0008',
'0009',
'0010',
'0011')
AND NOT a.prov_no = '100067743'
INSERT INTO #AFF_LAG
SELECT * FROM #templag2
UNION
SELECT * FROM #templag3
UNION
SELECT * FROM #templag4
UNION
SELECT * FROM #templag5
SELECT service_No,
CLAIM_NO,
Member_No,
P.Aff_No AS SVC_AFF_NO,
p.paid,
Amt_Charge,
Amt_Allow_P,
Amt_Copay,
Amt_Coin,
Amt_Risk,
Amt_pay,
Count_1,
Ex_1,
Location,
Procedure_1,
Modifier_1,
P.Eff_Date AS CLM_EFF_DATE,
Paid_Date,
A.[OP_NO],
A.[PROV_NO],
A.[AFF_NO],
A.[eff_DATE],
A.[END_DATE],
A.[LAG],
A.[Lag_Error],
A.[STATUS],
A.[Prov_Name],
A.[REGION],
A.[SPEC_1],
A.[DESCRIPTION],
A.[IRS_NO]
FROM #aff_lag AS A
LEFT OUTER JOIN AMISYS.dbo.service AS P
ON A.AFF_NO = P.AFF_NO AND p.paid IN ('NN', '*N')
GROUP BY service_No,
CLAIM_NO,
Member_No,
P.Aff_No,
P.Paid,
Amt_Charge,
Amt_Allow_P,
Amt_Copay,
Amt_Coin,
Amt_Risk,
Amt_pay,
Count_1,
Ex_1,
Location,
Procedure_1,
Modifier_1,
P.Eff_Date,
Paid_Date,
A.[OP_NO],
A.[PROV_NO],
A.[AFF_NO],
A.[eff_DATE],
A.[END_DATE],
A.[LAG],
A.[Lag_Error],
A.[STATUS],
A.[Prov_Name],
A.[REGION],
A.[SPEC_1],
A.[DESCRIPTION],
A.[IRS_NO]
DROP TABLE #AFF_LAG
DROP TABLE #templag2
DROP TABLE #templag3
DROP TABLE #templag4
DROP TABLE #templag5
不解決你的問題,但這是一個'OR'噩夢...你有沒有考慮創建一個臨時表到JOIN而不是一英里長的OR列表? – Siyual
'OR'大部分可以忽略。目的是添加邏輯'(region ='CR'和EFF_DATE> ='4/1/2016')'應該是[Lag_Error] ='滯後應該是1' –
不確定我是否正確,但爲什麼不' SELECT .. CASE WHEN region ='CR'and eff_date> ='4/1/2016'THEN'lag should be 1'ELSE ... END AS [Lag Error]'? – Serg