2010-07-30 89 views
0

您好我需要這個代碼的語法幫助:TSQL情況下語法

IF OBJECT_ID('TEMPDB..#LTS_MAP') IS NOT NULL 
BEGIN DROP TABLE #LTS_MAP END 


SELECT 
dtMicIssue as LATE_CHARGE_FACTOR 
,CASE 
WHEN (dtMicIssue is NOT NULL) AND (dtMicIssue <> '1900-01-01 00:00:00') 
THEN CONVERT(SMALLDATETIME,dtMicIssue) 
    ELSE NULL END 


INTO #LTS_MAP 
FROM SBAURSQL001.LTSArchive.dbo.LoanMaster_0609 

receiving error: Msg 8155, Level 16, State 1, Line 5 No column was specified for column 2 of '#LTS_MAP'.

嘗試情況下的功能與選擇的dtMicIssue的和語法搞亂結合...

回答

1

您需要別名CASE語句,以便它有一個列名:

IF OBJECT_ID('TEMPDB..#LTS_MAP') IS NOT NULL 
BEGIN DROP TABLE #LTS_MAP END 


SELECT 
dtMicIssue as LATE_CHARGE_FACTOR 
,CASE 
WHEN (dtMicIssue is NOT NULL) AND (dtMicIssue <> '1900-01-01 00:00:00') 
THEN CONVERT(SMALLDATETIME,dtMicIssue) 
    ELSE NULL END AS DATE 


INTO #LTS_MAP 
FROM SBAURSQL001.LTSArchive.dbo.LoanMaster_0609 
+0

啊我看到END後,一個其他問題我可以省略初始場dtMicIssue並只輸出MIP_CERTIFICATION_DATE? – JMS49 2010-07-30 14:42:10

+0

是的,我相信你可以。 – 2010-07-30 15:12:43

+0

明白了,感謝所有的幫助! – JMS49 2010-07-30 15:49:17

2

正是它說

每列需要在你所創建表#LTS_MAP姓名...

SELECT 
dtMicIssue as LATE_CHARGE_FACTOR 
,CASE 
WHEN (dtMicIssue is NOT NULL) AND (dtMicIssue <> '1900-01-01 00:00:00') 
THEN CONVERT(SMALLDATETIME,dtMicIssue) 
    ELSE NULL END AS SomethingMeaningfulHere --you're missing this: a column name! 


INTO #LTS_MAP 
FROM SBAURSQL001.LTSArchive.dbo.LoanMaster_0609 
2

既然你正在做一個SELECT INTO,SQL Server需要知道每列的名稱。您的第二列(與CASE一起)沒有明確的名稱。決定你想叫什麼,然後把

AS ColumnName 

表示結束CASE

2

試試這個

SELECT dtMicIssue as LATE_CHARGE_FACTOR, 
    CASE WHEN (dtMicIssue is NOT NULL) AND 
      (dtMicIssue <> '1900-01-01 00:00:00') 
     THEN CONVERT(SMALLDATETIME,dtMicIssue) 
     ELSE NULL END As SomeColumnName 

INTO #LTS_MAP 
FROM SBAURSQL001.LTSArchive.dbo.LoanMaster_0609