1

私は同僚から以下のプログラムを継承したばかりで、問題が何であるかを理解するのに苦労しています. 私は MS SQL サーバーを使用していますが、彼は別のソフトウェアを使用していたと思います。システム内の一時テーブルとテーブルを使用するクエリを実行すると、次のエラー メッセージが表示され続けます: Msg 102, Level 15, State 1, Line 8 Incorrect syntax near '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)  
4

2 に答える 2

1
SELECT Person_ID, month, sum(Success) cnt
     FROM #Temp_Contact

月が見えない#temp_Contact

CREATE TABLE #Temp_Contact (
    Person_ID INT,
    Contact_Date DATETIME,
    Success INT)
GO
于 2013-10-07T21:05:42.383 に答える
0

ここにコンマがありません:

GROUP BY Person_ID, DATENAME(month, MONTH(Contact_Date)), month) AS src
                                                        ^

2 つのJOIN節がありますが、1 つの節しかありませんON。結合ごとに 1 つ必要です。

テーブルにmonthフィールドがありません。#Temp_Contact

于 2013-10-07T21:13:20.497 に答える