-2
나중에 쿼리에서 호출 할 테이블을 작성하는 저장 프로 시저가 있습니다. CTE를 사용하는 새 테이블을 추가해야했지만 이제는이를 사용하여 테이블을 실행해야합니다. 표현을 끝내려면 오류가 발생합니다. ';'근처에 잘못된 구문이 있습니다. 내가 그것을 지울 때 나는 내가 가지고 있어야 할 잘못을 얻고있다. CTE와 쿼리 자체는 저장 프로 시저 외부에서 작동합니다. 어떤 도움은 insert
문은 CTE (with
표현)를 사용할 수 있습니다저장 프로 시저의 CTE가 작동하지 않습니다.
set @cdq = 'insert #REMOVAL_FLAG
(
MYKEY,
REMOVAL_FLAG
)
WITH
create_key AS(
SELECT *,
(CONVERT(varchar(25), a.NDC11, 101) + CONVERT(varchar(25), a.PharmacyID, 101) + CONVERT(varchar(50),ABS(a.TotalNetCost),101)) as REVERSAL_KEY
FROM table1 a
),
find_rev AS (
SELECT *,
CASE
WHEN MIN(TotalAmount) OVER (PARTITION BY REVERSAL_KEY) < 0 THEN 1 ELSE NULL
END as Flag
FROM create_key
),
primary_flag as (
SELECT TOP 1500000 *,
DENSE_RANK() OVER (ORDER BY REVERSAL_KEY) as [GROUP],
ROW_NUMBER() OVER (PARTITION BY NDC11, PharmacyID, TotalNetCost ORDER BY REVERSAL_KEY) as PK
FROM find_rev
WHERE Flag = 1
ORDER BY [GROUP], PK
),
flagged as (
SELECT *,
CASE
WHEN COUNT (PK) OVER (PARTITION BY [GROUP], PK) > 1 THEN ''REMOVE''
END as REMOVAL_FLAG
FROM primary_flag
)
SELECT a1.MYKEY, f.REMOVAL_FLAG
FROM table1 a1
LEFT OUTER JOIN flagged f ON (f.MYKEY = a1.MYKEY)
'