有人可以告诉我他们能看到的是下面代码中的问题吗?
--Query for DC Allocated Stock - Qty & Values
-------------------------------------------
Declare @Brand varchar(50),
@Div varchar(50),
@Dept varchar(50),
@Store varchar(50),
@StyleOrSKU varchar(50)
Set @Brand = 'TestProduct' --Test criteria
set @Div = ''
Set @Dept = ''
set @Store = ''
set @StyleOrSKU = ''
首先查询,表格Qry_1_DCSOH - 手头退还库存数量
SELECT Brand,
CASE
WHEN Brand = @Brand THEN sum(AllocStockQty)
WHEN Division = @Div THEN sum(AllocStockQty)
WHEN Department = @Dept THEN sum(AllocStockQty)
WHEN Store = @Store THEN sum(AllocStockQty)
WHEN StyleOrSKU = @StyleOrSKU THEN sum(AllocStockQty)
ELSE 'NoMatch'
END as [Allocated Stock Qty]
FROM Qry_2_DCAllocStock
GROUP BY Brand, Division, Department, Store, StyleOrSKU
我得到的错误是Msg 8114,Level 16,State 5,Line 20 将数据类型varchar转换为float时出错。
但我真的不确定问题出在哪里 - 请协助。
答案 0 :(得分:0)
You have varchar(50) types.. and it seems the from clause is returning some numeric values.
Cast the When clauses to var char or use the returned types on the variables.
答案 1 :(得分:0)
错误在于您尝试使用else选项强制使用具有浮动值的计算表达式的无数值。 它可以这样纠正:
""
答案 2 :(得分:0)
您正在CASE
中混合使用数据类型。
...来自类型集的最高优先级类型 result_expressions和可选的else_result_expression。
您的示例中的highest precedence类型为float
。
更改else结果的类型或将sum结果转换为某种char类型。