2010-07-30 60 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