为什么我收到"从字符串转换日期和/或时间时转换失败."?

KTa*_*ate 1 sql t-sql sap sapb1

我想在运行此查询时总计查询[订单数量]和[总收入]的天数.但我在我的SQL服务器中收到此错误"从字符串转换日期和/或时间时转换失败".

我的代码是这样的:

select  TaxDate [Date]
        ,count(docentry) [# of Orders]
        ,sum(doctotal)-(SUM(TotalExpns)+SUM(VatSum)) [$]

from ORDR

where   CANCELED<>'Y'
        and SlpCode = '37'
        and TaxDate >= '2015-05-26'
        and DocStatus = 'C'

GROUP BY TaxDate

UNION ALL

select  'Total'
        ,SUM(docentry)
        ,sum(doctotal)-(SUM(TotalExpns)+SUM(VatSum))

from ORDR

where   CANCELED<>'Y'
        and SlpCode = '37'
        and TaxDate >= '2015-05-26'
        and DocStatus = 'C'

group by TaxDate
order by TaxDate
Run Code Online (Sandbox Code Playgroud)

我是编写查询的新手.我没有使用"UNION"工具的经验.所以我对此提出任何建议表示感谢.

Gor*_*off 5

你有一个union all在第一子查询和日期'Total'在第二位.SQL Server决定两者都应该是日期,因此您将收到转换错误'Total'.

它们需要是同一类型.尝试将第一个更改为:

select convert(varchar(10), TaxDate, 121) as [Date],
       count(docentry) [# of Orders],
       sum(doctotal)-(SUM(TotalExpns)+SUM(VatSum)) [$]
Run Code Online (Sandbox Code Playgroud)

union all无论如何,您不需要此查询.我想with rollup你做了什么:

select  TaxDate [Date], count(docentry) [# of Orders],
        sum(doctotal)-(SUM(TotalExpns)+SUM(VatSum)) [$]
from ORDR
where CANCELED <> 'Y' and SlpCode = '37' and TaxDate >= '2015-05-26' and
      DocStatus = 'C'
group by TaxDate with rollup;
Run Code Online (Sandbox Code Playgroud)