ssms-2014 - 获得 Top 10 产品的结果
问题描述
我想返回特定产品组(特定部门前 10 名产品)的结果(单位、现金、价格、成本等)。
我在下面编写的代码列出了 WHERE 子句末尾的前 10 个代码,但不返回结果——它只返回列标题,但没有数据?
如果我从末尾的 es.ClientProductID 数字(前 10 个)中删除“N”和逗号,则会收到以下错误消息:“将 nvarchar 转换为数字数据类型的算术溢出错误。” (es.ClientProductID 是一个 nvarchar 数据类型)。
Sales 是 INT 数据类型,Price 是 DECIMAL 数据类型。
请问有谁知道如何解决这个问题?如果是这样,你能修改下面的代码吗?提前致谢。
select
es.ClientProductID,
es.ProductName,
ash.sales,
ash.sales * ash.price as CashSales,
ash.price,
ash.cost,
ash.date
from AggregatedSalesHistory as ash
join v_EnterpriseStructure as es on es.ProductSID = ash.ProductSID
join PriceZone as pz on pz.PriceZoneID = ash.PriceZoneID
where
es.DepartmentName = 'Dairy'
and ash.segmentid = 0
and pz.Name = 'South'
and ash.date >= '2014-1-1' and ash.Date<='2014-12-24'
and es.ClientProductID IN (N'7119508806', N'7119502372', N'7003836538', N'7119502437', N'2500002694', N'2500002606', N'7003836540', N'2500005433', N'2500005542', N'2500002893')
解决方案
一个产品不能同时有两个 ID。or
您应该在所有产品 ID 之间使用运算符。或者更好的是,使用in
作为一系列or
s 的简写的运算符:
and es.ClientProductID IN (7119508806, 7119502372, 7003836538, 7119502437, 2500002694, 2500002606, 7003836540, 2500005433, 2500005542, 2500002893)
编辑:
根据评论ClientProductID
是一nvarchar
列,因此您应该在的参数列表中使用nvarchar
文字,而不是整数文字:in
and es.ClientProductID IN (N'7119508806', N'7119502372', N'7003836538', N'7119502437', N'2500002694', N'2500002606', N'7003836540', N'2500005433', N'2500005542', N'2500002893')
推荐阅读
- c# - 创建 lambda 表达式以查询数据
- javascript - Morgan 没有记录其余的 api 调用
- neo4j - 了解 Neo4j 的运算符
- java - 如何使用 JavaScript 在 selenium 中注入日期选择器的值?
- machine-learning - h2o automl 是在哪个框架上构建的?
- scala - Spark 数据帧 orderBy 使用变量
- c# - 是否有功能可以知道窗口是否在任务栏上闪烁橙色的 flashinfo?
- react-native - Flatlist 每次滑动手势最多滚动一项
- firebase - 如何正确启动 Gmail Watch 的 OAuth 流程?
- google-classroom - Google Classroom API References 不要求提供描述标题