Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 转换varchar值时转换失败';有线';到数据类型int_Sql Server_Casting_Int_Case_Varchar - Fatal编程技术网

Sql server 转换varchar值时转换失败';有线';到数据类型int

Sql server 转换varchar值时转换失败';有线';到数据类型int,sql-server,casting,int,case,varchar,Sql Server,Casting,Int,Case,Varchar,因此,我有以下逻辑: set nocount on select t1.*, ISNULL(t2.CountNewGLLinkIDs,0) AS CountNewGLLinkIDs from (select [Client_Number],[ClientName],[RemitType],[ClientServiceRep],[Backup_ClientServiceRep], [ClientAuditor],[WirelessAuditor] ,[AccountManager

因此,我有以下逻辑:

set nocount on

select t1.*, ISNULL(t2.CountNewGLLinkIDs,0) AS CountNewGLLinkIDs

from

(select [Client_Number],[ClientName],[RemitType],[ClientServiceRep],[Backup_ClientServiceRep],       [ClientAuditor],[WirelessAuditor]
,[AccountManager],[ProvisioningRep],[BillingMonth], CASE RO.Inventory_Type WHEN 'WIRELESS' THEN 1     ELSE 0 END AS InventoryType, [NbrGLLinkIDs],[NbrInvoices],[AutoProcessCount] as [AutoProcessed]
,CONVERT(numeric(18,4), CONVERT(decimal, [AutoProcessCount])/CASE WHEN ISNULL([NbrInvoices], 1) =     0 THEN 1 ELSE ISNULL([NbrInvoices], 1) END) as AutoProcessPercentage
,[Spend],[EDI]
,CONVERT(numeric(18,4), CONVERT(decimal, [EDI])/CASE WHEN ISNULL([NbrInvoices], 1) = 0 THEN 1     ELSE ISNULL([NbrInvoices], 1) END) as EDIPercentage
,[Paper]
,CONVERT(numeric(18,4), CONVERT(decimal, [PAPER])/CASE WHEN ISNULL([NbrInvoices], 1) = 0 THEN 1     ELSE ISNULL([NbrInvoices], 1) END) as PaperPercentage
,[Import]
,CONVERT(numeric(18,4) , CONVERT(decimal, [Import])/CASE WHEN ISNULL([NbrInvoices], 1) = 0 THEN 1     ELSE ISNULL([NbrInvoices], 1) END) as ImportPercentage
,[TotalLateFees]
,[TotalLateFees]/CASE WHEN ISNULL([Spend], 1) = 0 THEN 1 ELSE ISNULL([Spend], 1) END as     LateFeesPercentOfSpend
,[NumberOfLateFees],[BalanceCarriedForward]
,[BalanceCarriedForward]/CASE WHEN ISNULL([Spend], 1) = 0 THEN 1 ELSE ISNULL([Spend], 1) END as     BCFPercentOfSpend
,[NumberOfBCFs],[ApprovedWithin5DaysOfDue],[ApprovedAfterDue],[ProcessedWithin5DaysOfDue],    [ProcessedAfterDue],[AvgDaysToProcess]
,[NewMasterAccounts]
,[BANCount] AS [NewAccountBANCount]
 FROM [RollupReports].[dbo].[report_Rollup_KPI_Approval] RO with (nolock)) t1


left outer join

--get count of gllinkid during months required
(select client_number, CASE WHEN InventoryType = 1 THEN 'WIRELESS' ELSE 'WIRED' END AS     InventoryType,
cast(datepart(mm,DateCreated) as varchar(2)) + '/01/' + cast(datepart(yyyy,DateCreated) as     varchar(4)) as BillingMonth,
count(gllinkid) as CountNewGLLinkIDs 
from glacct with (nolock)
inner join 
    (select vendor,MAX(InventoryType) as InventoryType
    FROM tbl_Ref_Vendors with(nolock)
    group by vendor) as VendorData ON glacct.vendor = VendorData.Vendor
where Client_Number in
    (select distinct client_number
     FROM [RollupReports].[dbo].[report_Rollup_KPI_Approval]  with (nolock))
group by client_number, cast(datepart(mm,DateCreated) as varchar(2)) + '/01/' +     cast(datepart(yyyy,DateCreated) as varchar(4)),
InventoryType) t2

ON t1.Client_Number = t2.client_number and t1.BillingMonth = t2.BillingMonth and t1.InventoryType     = t2.InventoryType
order by t1.ClientName, t1.InventoryType, t1.BillingMonth DESC
这给了我这个错误:将varchar值“WIRED”转换为数据类型int时,转换失败

我到处都找遍了,试着把它投给瓦查尔,但我觉得我缺乏经验,这没用。如果有人能指出我为什么会出现这个错误,这样我就可以学习如何解决这个问题,那就太好了


ps:对不起我的英语。

两个查询的
案例陈述中都有问题

T1
中有case语句 那是

CASE RO.Inventory_Type WHEN 'WIRELESS' THEN 1     ELSE 0 END AS InventoryType
此处,基于
RO.Inventory\u Type
,库存类型将为
0
1
。因此这里的InventoryType列数据类型将是
INT

在T2中有case语句

CASE WHEN InventoryType = 1 THEN 'WIRELESS' ELSE 'WIRED' END AS InventoryType
但是这里的
InventoryType
将是
无线的
有线的
。这里的InventoryType数据类型将是
Varchar

最后,您将连接T1和T2表,如

ON t1.Client_Number = t2.client_number 
and t1.BillingMonth = t2.BillingMonth 
and t1.InventoryType = t2.InventoryType -- this where the problem is 

因此,在加入时,它正在尝试将t2.InventoryType转换为
int
,该值包含
varchar
值,因此您将得到该错误。

明白了!非常感谢你的回答,它引导我修复它!谢谢@用户3038694-很高兴它帮助了你