Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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
转换nvarchar值';时转换失败';在SQL Server中创建数据类型int_Sql_Sql Server - Fatal编程技术网

转换nvarchar值';时转换失败';在SQL Server中创建数据类型int

转换nvarchar值';时转换失败';在SQL Server中创建数据类型int,sql,sql-server,Sql,Sql Server,我正试图根据特定的OrderID从我的OrderItem表中显示项目名称及其各自数量的列表,但查询不起作用,并且显示转换失败错误 我构建的查询成功地显示了一个带有数量的ItemIDs列表,但我希望它改为显示ItemNames。问题是只有ItemID可以在OrderItem表中访问 我做了一些挖掘,并尝试使用内部连接,但我得到了这个错误,所以我假设我在正确的轨道上 将nvarchar值“CardiVas”转换为时失败 数据类型int 问题是: SELECT OrderItem.ItemI

我正试图根据特定的
OrderID
从我的
OrderItem
表中显示项目名称及其各自数量的列表,但查询不起作用,并且显示转换失败错误

我构建的查询成功地显示了一个带有
数量的
ItemIDs
列表,但我希望它改为显示
ItemNames
。问题是只有
ItemID
可以在
OrderItem
表中访问

我做了一些挖掘,并尝试使用
内部连接
,但我得到了这个错误,所以我假设我在正确的轨道上

将nvarchar值“CardiVas”转换为时失败 数据类型int

问题是:

SELECT 
    OrderItem.ItemID, 
    SUM(OrderItem.Quantity) AS NumOfOrderItems
FROM 
    OrderItem 
INNER JOIN 
    Item ON Item.Name = OrderItem.ItemID, [Order] 
WHERE 
    [OrderItem].OrderID  = [Order].OrderID
GROUP BY  
    OrderItem.ItemID;
此外,我对转换错误做了一些挖掘,并尝试了下面使用
CONVERT
CASE
的方法,但也不起作用,我仍然得到了相同的错误:

CONVERT(NVARCHAR(20), OrderItem.ItemID)

有谁能给我一个解决方案,或者一个更好的方式来显示我需要的数据吗


如果需要任何其他代码或信息,请告诉我,我会将其添加到问题中。

您无需更改
加入条件以显示姓名:

SELECT i.ItemName, SUM(oi.Quantity) AS NumOfOrderItems
FROM OrderItem oi INNER JOIN
     Item i
     ON i.ItemId = oi.ItemID
GROUP BY i.ItemName;

您也不需要使用
Order
表来获取所需的计数。(对于表来说,
Order
是一个糟糕的名称,因为它是SQL关键字。)

这里有一个连接样式的mashup。您有显式内部联接和隐式内部联接。你应该对你的连接保持明确。另外,不要害怕在查询中添加一些空白,格式对可读性有很大影响。您在[Order]表上使用的是旧式联接,我会考虑使用一个适当的<代码>连接 <代码> OrdID >在<代码>命令>代码>表中,在<代码> OrthType 表中作为外键。code>OrderItem
Order
Item
表之间的关联。请注意!谢谢你的建议@谢谢你!我称之为订单,因为该系统是一个订单交付系统。我知道那些可怕的命名惯例(@mustang00…我用复数形式命名表,这解决了大多数表的问题,而不是
,但我想我从来没有一个名为
@mustang00的实体,因为Order实际上是头,你可以做一些类似OrderHead或类似的事情。这有点奇怪,但不使用保留工作会让你的生活更轻松ds.@GordonLinoff此查询的问题是,当我只希望它显示特定
订单的
订单项目时,它会显示所有的
订单项目
,那么
查询
将如何更改?这就是我将
订单
包括在内的原因。很抱歉没有清除这些内容。@mustang00…您将添加订单的
WHERE
子句,其中oi.OrderId=XXX
SELECT i.ItemName, SUM(oi.Quantity) AS NumOfOrderItems
FROM OrderItem oi INNER JOIN
     Item i
     ON i.ItemId = oi.ItemID
GROUP BY i.ItemName;