我剛剛從同事那裏繼承了下面的程序,我很難找出問題所在。我使用MS SQL服務器,我相信他使用的是不同的軟件。我繼續收到錯誤消息:Msg 102,Level 15,State 1,Line 8當我運行使用Temp表和我們系統中的表的查詢時,'month'附近的語法錯誤。再次,我似乎無法弄清楚如何糾正語法問題。Msg 102,Level 15,State 1,Line 8'month'附近的語法不正確
CREATE TABLE #Temp_Contact (
Person_ID INT,
Contact_Date DATETIME,
Success INT)
GO
INSERT INTO #Temp_Contact (Person_ID, Contact_Date, Success)
SELECT Person_ID, Contact_Date,
gw_ppp.dbo.fnWasContacted(Contact_Method, Contact_Result, Participant)
FROM gw_dw.dbo.DimContacts_Child
GO
CREATE TABLE #Temp_Months (Month VARCHAR(30))
INSERT INTO #Temp_Months
SELECT 'January' UNION ALL
SELECT 'February' UNION ALL
SELECT 'March' UNION ALL
SELECT 'April' UNION ALL
SELECT 'May' UNION ALL
SELECT 'June' UNION ALL
SELECT 'July' UNION ALL
SELECT 'August' UNION ALL
SELECT 'September' UNION ALL
SELECT 'October' UNION ALL
SELECT 'November' UNION ALL
SELECT 'December';
這是生成錯誤消息的查詢
SELECT lft.Person_ID,
m.Month month,
gw_PPP.dbo.fnFmtContact(src.cnt) result
FROM gw_dw.dbo.DimContacts_Child AS lft
JOIN #Temp_Months m
on m.Month=month (lft.Contact_Date)
LEFT OUTER JOIN
(SELECT Person_ID,
DATENAME(month, MONTH(Contact_Date)) as Month,
sum(Success) as cnt
FROM #Temp_Contact
GROUP BY Person_ID, DATENAME(month, MONTH(Contact_Date))) AS src
ON (lft.Person_ID = src.Person_ID AND month (lft.Contact_Date) = src.month)
一個問題是'on m.Month = month(lft.Contact_Date)'條件。 'm.Month'是'VARCHAR'而'month(lft.Contact_Date)'是'int' –