2015-02-07 126 views
0

我有3個CTE的查詢。我很好奇如何將參數傳遞給它們。如果我聲明在的查詢東西頂部傳遞參數給CTE

申報@prioryear VARCHAR(5) 組@prioryear的效果= '2014'

申報@currentyear VARCHAR(5) 組@prioryear =' 2015'

那麼我怎樣才能將這些變量傳遞給CTE?我一直試圖在CTE名字後面加上paren,但似乎沒有人想通過。

謝謝, 喬

`

with paidPrior as (
SELECT DISTINCT des_heapplicationSet.des_PeopleId 
FROM   des_heapplicationSet INNER JOIN 
         des_zyearSet ON des_heapplicationSet.des_YearId = des_zyearSet.des_zyearId INNER JOIN 
         des_zapplicationstatusSet ON des_heapplicationSet.des_ApplicationStatusId = des_zapplicationstatusSet.des_zapplicationstatusId 

WHERE  (des_zyearSet.des_YearText = '2014') AND (des_zapplicationstatusSet.des_applicationstatustext = 'paid') and des_IsMaster =0 
), 

allCurrent as (
SELECT DISTINCT des_heapplicationSet.des_PeopleId 
FROM   des_heapplicationSet INNER JOIN 
         des_zyearSet ON des_heapplicationSet.des_YearId = des_zyearSet.des_zyearId 
WHERE  (des_zyearSet.des_YearText = '2015') and des_IsMaster =0 
), 

peopleSet as (
select distinct des_PeopleId, MAX(des_ApplicationNumber) as appNum 
from des_heapplicationSet 
where des_PeopleId in (select * from paidPrior) and des_PeopleId not in (select * from allCurrent) 
group by des_PeopleId 
) 

SELECT  des_zterritorySet.des_TerritoryText, des_hepeopleSet.des_PeopleNumber, des_hepeoplenameSet.des_FirstName, des_hepeoplenameSet.des_LastName, des_headdressmasterSet.des_AddressLine, 
         des_headdressmasterSet.des_FinalCity, des_headdressmasterSet.des_Zip5, des_headdressmasterSet.des_CountyName, 'WI' as stateOfWi, des_hepeoplephoneSet.des_PhoneNumber, 
         des_heapplicationSet.des_EmailAddress 
FROM   des_heapplicationSet INNER JOIN 
         des_hepeopleSet ON des_heapplicationSet.des_PeopleId = des_hepeopleSet.des_hepeopleId INNER JOIN 
         des_headdressmasterSet ON des_heapplicationSet.des_MailingAddressId = des_headdressmasterSet.des_headdressmasterId INNER JOIN 
         des_zterritorySet ON des_heapplicationSet.des_TerritoryId = des_zterritorySet.des_zterritoryId INNER JOIN 
         des_hepeoplenameSet ON des_heapplicationSet.des_PeopleNameId = des_hepeoplenameSet.des_hepeoplenameId LEFT OUTER JOIN 
         des_hepeoplephoneSet ON des_heapplicationSet.des_PeoplePrimaryPhoneId = des_hepeoplephoneSet.des_hepeoplephoneId 
where des_ApplicationNumber in (select appnum from peopleSet) and des_TerritoryText = 'Adams' 
order by des_TerritoryText 
` 

回答

1

你就不能直接引用變量?在CTE

+0

中將'2015'替換爲@currentyear,只要我將declare語句添加到頂部即可。我收到 消息319,級別15,狀態1,行5 關鍵字'with'附近的語法不正確。如果此語句是公用表表達式,xmlnamespaces子句或變更跟蹤上下文子句,則前面的語句必須以分號結尾。 錯誤 – tjcinnamon 2015-02-07 19:23:41

+0

duh!只需要參數後面的分號! – tjcinnamon 2015-02-07 19:28:32

+0

嗯,很多更新的語法需要;而且很容易忘記 - 我自己做足夠多:) – Brad 2015-02-07 19:33:18