尝试编写SELECT语句但仍然无法转换为int错误

时间:2014-11-07 16:14:14

标签: sql sql-server

我是SQL编码的新手,我正在努力解决我在数据库类中遇到的问题。

我不想回答!我只需要被推向正确的方向。 以下是我挣扎的问题。

编写一个SELECT语句,为包含这些列的产品的每个类别返回一行: Categories表中的CategoryName列 Products表中的产品数量 Products表中最昂贵产品的定价 对结果集进行排序,以便首先显示包含最多产品的类别。

这是我到目前为止所做的:

     SELECT C.CategoryName, P.CategoryID, COUNT(*) Products, MAX(P.ListPrice)
     FROM Categories C, Products P
     WHERE C.CategoryName=P.CategoryID
     GROUP BY C.CategoryName,P.CategoryID ORDER BY COUNT(*) desc;

每次运行我的SELECT查询时,我都会收到此错误:

     Msg 245, Level 16, State 1, Line 1
     Conversion failed when converting the varchar value 'Basses' to data type int.

非常感谢任何帮助! 谢谢!

-------------- UPDATE ----------------------- UPDATE -------- --------------

嘿大家只是想在每个人的帮助下知道我终于明白了。

这是最终结果。

    SELECT C.CategoryName,COUNT(P.CategoryID) AS NumberOfProducts, MAX(P.ListPrice) AS
    MostExpensiveProduct
    FROM Categories C, Products P
    WHERE P.CategoryID=C.CategoryID
    GROUP BY C.CategoryName ORDER BY COUNT(*) desc;

2 个答案:

答案 0 :(得分:5)

最有可能导致您尝试将C.CategoryName(很可能是VARCHAR类型)与P.CategoryID(可能是INT

)进行比较

确保在加入表格时使用了正确的相关字段。

答案 1 :(得分:0)

我认为您正在将varchar(categoryname)与int(categoryid)进行比较,在使用where condition时将varchar的类型更改为int,或者在使用where where时使用相同数据类型的列