繁体   English   中英

转换CSV文件时出现SQL查询错误

[英]SQL query error when converting CSV file

这是我的查询:

DECLARE @cmd VARCHAR(255)

SET @cmd = 'bcp "select Cash.TransC_dtmDateTime, case
when CONVERT(varchar(10),Cash.TransC_dtmDateTime,108) <'06.00' then (convert(varchar(10),Cash.TransC_dtmDateTime -1,103))
else
(convert(varchar(10),Cash.TransC_dtmDateTime,103))
end as TransDate, tblTrans_Ticket.TransT_intNoOfSeats as NoOfSeats into #seats FROM tblTrans_Cash Cash , tblTrans_Ticket   , tblPaymentType
WHERE Cash.TransC_strType = tblPaymentType.PayType_strType and tblTrans_Ticket.TransT_lgnNumber= Cash.TransC_lgnNumber and
Cash.TransC_dtmDateTime between '2016-07-01 06:00:00.000' and '2016-08-01 06:00:00.000' and
tblTrans_Ticket.TransT_intNoOfSeats >0
and Cash.Workstation_strCode='K_DEDEDEDE'
and  tblPaymentType.PayType_strDescription in ('JUSPAY','CITRUS','FUELWALLETONLINE','CREDIT CARD')
AND ISNULL(Cash.TransC_strBKCardNo,'') not like '990022%'
order by Cash.TransC_dtmDateTime
select (convert(varchar(10),TransDate,103)),  sum(NoOfSeats)as seats from #seats  group by convert(varchar(10),TransDate,103) order by TransDate
drop table #seats" queryout "c:/tests.csv" -U sa -P test -S 192.168.57.5,1441 -T -c -t,'
Exec xp_cmdshell @cmd

当我执行它时,它显示此错误:

Msg 102,第15级,状态1,第8行
'2016'附近的语法不正确

您需要转义报价。

DECLARE @cmd VARCHAR(255)
SET @cmd = 'bcp "select Cash.TransC_dtmDateTime, case
        when CONVERT(varchar(10),Cash.TransC_dtmDateTime,108) <''06.00'' 
then (convert(varchar(10),Cash.TransC_dtmDateTime -1,103))
        else
        (convert(varchar(10),Cash.TransC_dtmDateTime,103))
        end as TransDate, tblTrans_Ticket.TransT_intNoOfSeats as NoOfSeats 
into #seats FROM tblTrans_Cash Cash , tblTrans_Ticket   , tblPaymentType
        WHERE Cash.TransC_strType = tblPaymentType.PayType_strType and 
tblTrans_Ticket.TransT_lgnNumber= Cash.TransC_lgnNumber and
        Cash.TransC_dtmDateTime between ''2016-07-01 06:00:00.000'' and 
''2016-08-01 06:00:00.000'' and
        tblTrans_Ticket.TransT_intNoOfSeats >0
        and Cash.Workstation_strCode=''K_DEDEDEDE''
        and  tblPaymentType.PayType_strDescription in 
(''JUSPAY'',''CITRUS'',''FUELWALLETONLINE'',''CREDIT CARD'')
        AND ISNULL(Cash.TransC_strBKCardNo,'') not like ''990022%''
        order by Cash.TransC_dtmDateTime
        select (convert(varchar(10),TransDate,103)),  sum(NoOfSeats)as seats 
from #seats  group by convert(varchar(10),TransDate,103) order by TransDate
        drop table #seats" queryout "c:/tests.csv" -U sa -P test -S 
192.168.57.5,1441 -T -c -t,'
Exec xp_cmdshell @cmd

使用动态查询生成时 ,必须在单引号处的引号中更新并执行该语句

更改您的查询语句,如下所示:

Cash.TransC_dtmDateTime,108) <'06.00'

Cash.TransC_dtmDateTime,108) <''06.00''

还有很多其他的地方

between '2016-07-01 06:00:00.000' and '2016-08-01 06:00:00.000'

between ''2016-07-01 06:00:00.000'' and ''2016-08-01 06:00:00.000''

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM