Sql 选择案例时出错
有人能告诉我他们看到了什么,这是下面代码中的问题吗Sql 选择案例时出错,sql,sql-server,tsql,case,Sql,Sql Server,Tsql,Case,有人能告诉我他们看到了什么,这是下面代码中的问题吗 --Query for DC Allocated Stock - Qty & Values ------------------------------------------- Declare @Brand varchar(50), @Div varchar(50), @Dept varchar(50), @Store varchar(50), @StyleOr
--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
我得到的错误是msg8114,16级,状态5,第20行
将数据类型varchar转换为float时出错
但我真的不确定问题出在哪里-请协助。您有varchar(50)类型。。而且似乎from子句正在返回一些数值
将When子句强制转换为var char或对变量使用返回的类型。错误在于,您试图使用else选项强制已具有浮点值的计算表达式使用非数值。 可以这样更正:
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 0
END as [Allocated Stock Qty]
FROM Qry_2_DCAllocStock
GROUP BY Brand, Division, Department, Store, StyleOrSKU
您在
案例中混合了数据类型
委员会:
。。。中类型集中优先级最高的类型
结果\u表达式和可选的else\u结果\u表达式
在您的示例中,类型为float
更改else结果的类型或将总和结果转换为某种字符类型。这是什么语言?你能调整你问题的标签吗?我猜这是SQL。指定哪一行是第20行对您很有帮助,但是错误消息非常确定您正在尝试获取一个varchar数据类型,使其等同于某个地方的浮点值。向各位道歉-这是SQLformatting,grammarThanks,谢谢您的帮助-请整理!