运行它时我做一个联盟的所有超过2级不同分贝的我得到这个错误时失败:转换转换VARCHAR数据类型为int,但没有被定义为int
消息245,级别16,状态1,第16行 将varchar值“12037.5”转换为数据类型int时转换失败。
但我的列没有一个是整数类型?出于某种原因,它将Main选择类型更改为整数。
DECLARE @SAGESTARTDATE AS DATETIME,
@SAGEENDDATE AS DATETIME,
@SAGEITEM AS NVARCHAR(50),
@SPSSTARTDATE AS DATETIME,
@SPSENDDATE AS DATETIME,
@SPSCOUNTRY AS NVARCHAR(50)
set @sagestartdate = '2017-01-15'
set @sageenddate = '2017-01-15'
set @sageitem = 'diesel 50ppm'
set @spsstartdate = '2017-01-15'
set @spsenddate = '2017-01-15'
set @spscountry = 'dRC'
Select FleetNo, TxDate, Max(STCode) as StCode, SageRev, SageQty, Max(SagePrj) as SagePrj,
MAx(SPSType) as SPSType, MAx(SPSModel) as SPSModel, MAX(SPSSite) as SPSSite, Max(SPSCountry) as SPSCountry,
SPSFuel
From (
Select Strans.[Description] COLLATE SQL_Latin1_General_CP1_CI_AS as FleetNo
, Strans.TxDate as TxDate
, StMstr.Code as STCode
, Strans.[Reference] as SageRev
, Strans.Quantity as SageQty
, STrans.ProjectCode as SagePrj
, 0 AS SPSTYPE
, 0 AS SPSMODEL
, 0 AS SPSSITE
, 0 AS SPSCOUNTRY
, 0 as SPSFuel
from [KCS SARL].DBO._bvSTTransactionsFull STrans join
[KCS SARL].DBO._bvStockFull StMstr on STrans.AccountLink = StMstr.StockLink
Where Code = @SAGEITEM and Strans.TxDate BETWEEN @SAGESTARTDATE AND @SAGEENDDATE
UNION ALL
Select SPSTr.FleetNo as FleetNo
, SPSTR.ProdDate AS TxDate
, 0 as STCode
, 0 as SageRev
, 0 as SageQty
, 0 AS SagePrj
, SPSTR.EqType AS SPSTYPE
, SPSTR.ModelName AS SPSMODEL
, SPSTR.SiteName AS SPSSITE
, SPSTR.Country AS SPSCOUNTRY
, SPStr.Fuel as SPSFuel
From [SPS].dbo.DataInputTotal SPStr
Where SPStr.WCode = 102 and SPSTR.ProdDate BETWEEN @SPSSTARTDATE and @SPSENDDATE
AND SPSTR.Country = @SPSCOUNTRY
) as Fuel
Group By FleetNo, TxDate, SageRev, SageQty, SPSFuel
Order by FleetNo
辉煌!谢谢你,这是造成这个问题的原因。 –
@MardusDavel乐于帮助! – SqlZim