Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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 选择案例时出错_Sql_Sql Server_Tsql_Case - Fatal编程技术网

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,谢谢您的帮助-请整理!