【发布时间】:2017-07-28 17:43:23
【问题描述】:
此查询在 MS Access 中有效:
SELECT
Firm.Adm_Firm_ID,
Firm.CCIS_Firm_Seqn_Nbr,
Firm.Firm_Name,
Firm.Dba_Firm_Name,
OHA.File_Closure_Date,
OHA.Adm_Qual_Flag,
OHA.Firm_FY_End_Date,
OHA.Report_Received_Date,
OHA.Cognizant_Letter_Flag,
OHA.Audit_Type,
Firm.AQ_Flag,
IIF(OHA.File_Closure_Date>=DATEADD("m", -18, Date()),"Yes","No") AS Relevant
FROM
dbo_Adm_Firm AS Firm
INNER JOIN
dbo_Adm_OHA_Rate AS OHA ON Firm.Adm_Firm_ID = OHA.Adm_Firm_ID
WHERE
((OHA.File_Closure_Date IS NOT Null) AND (OHA.File_Closure_Date>#1/1/2010#))
ORDER BY
Firm.Firm_Name, OHA.Firm_FY_End_Date DESC;
我尽力将其转换为 T-SQL,我在批处理脚本中调用它。
SELECT
Firm.Adm_Firm_ID,
Firm.CCIS_Firm_Seqn_Nbr,
Firm.Firm_Name,
Firm.Dba_Firm_Name,
OHA.File_Closure_Date,
OHA.Adm_Qual_Flag,
OHA.Firm_FY_End_Date,
OHA.Report_Received_Date,
OHA.Cognizant_Letter_Flag,
OHA.Audit_Type,
Firm.AQ_Flag,
IIF(OHA.File_Closure_Date>=DATEADD(m, -18, GETDATE()),'Yes','No') AS Relevant
FROM
dbo.Adm_Firm AS Firm
INNER JOIN
dbo.Adm_OHA_Rate AS OHA ON Firm.Adm_Firm_ID = OHA.Adm_Firm_ID
WHERE
((OHA.File_Closure_Date IS NOT Null) AND (OHA.File_Closure_Date>'1/1/2010'))
ORDER BY
Firm.Firm_Name, OHA.Firm_FY_End_Date DESC;
我在 excel 文件中得到的输出是:
消息 102,级别 15,状态 1,服务器 CH-IS-DB1,第 3 行
'>' 附近的语法不正确。
所以我相信问题出在DATEADD 方法上,但我就是不知道有什么区别。我尝试将 Date() 更改为 GetDate() 并更改字符串分隔符。有什么建议吗?
【问题讨论】:
-
提示 1 - 添加空格以提高可读性。
-
提示号 2 - 每个部分在单独的行中,将行注释到它的工作点,对该行进行故障排除
-
我已经编辑了您的问题以提高可读性。接受更改或自己让眼睛更容易:)
-
什么版本的 SQL Server?
标签: sql-server tsql ms-access