Прежде всего, прошу прощения за огромный блок кода. Это в основном таблица, содержащая 4 оператора select (каждый с другим [Lag_Error]), затем объединяет их все вместе для создания отчета об ошибке.Необходима помощь с сообщением об ошибке
Мой босс на моем внесении изменений в этот код. Мне нужен этот отчет об ошибке, чтобы зафиксировать if (a.region = 'CR' и a.eff_date = '4/1/2016'), [Lag Error] должен отображать «Lag должен быть 1» (как из первого оператора select) , Я смог выполнить это, используя инструкцию обновления в конце, но она сказала, что мне нужно вернуться через код и внести изменения в каждый оператор select, чтобы сделать это.
Таким образом, для любой записи, имеющей (область CR и eff_date> = 4/1/2016) кнопки [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] = 'Lag должно быть 1' –
Не уверен, что я прав, но почему бы не ' SELECT .. CASE WHEN region = 'CR' и eff_date> = '4/1/2016' THEN 'Lag должен быть 1' ELSE ... END AS [Lag Error] '? – Serg