- 爱易网页
-
MSSQL教程
- MS SQL 分组求最大值的疑点
日期:2014-05-17 浏览次数:20456 次
MS SQL 分组求最大值的疑问
最近在做项目时,遇到一个很奇怪的问题,求高手解释
【开发环境】
SQL Server 2008
【问题描述】
有2张表,结构和测试数据如下:
表tb1 表tb2
[Name] [varchar](10) NULL, [ITEM_ID] [int] NULL,
[ITEM_ID] [int] NULL, [TYPES] [int] NULL
[Score] [nvarchar](50) NULL
表tb1 表tb2
Name ITEM_ID Score ITEM_ID TYPES
张三 1 74 1 0
张三 1 83 2 1
张三 1 93
李四 1 84
李四 1 184
李四 2 OK
【查询情况】
我写了2个sql语句,一个根据ITEM_ID分组,查出最大的Score;一个根据Name分组,查出最大的Score
1、select tb1.ITEM_ID,max(cast(tb1.Score as int))
from tb1
inner join tb2 on tb1.ITEM_ID=tb2.ITEM_ID
where tb2.[TYPES]=0
group by tb1.ITEM_ID
语句执行正常,是我期望的结果
2、select tb1.Name,max(cast(tb1.Score as int))
from tb1
inner join tb2 on tb1.ITEM_ID=tb2.ITEM_ID
where tb2.[TYPES]=0
group by tb1.Name
语句执行失败,报错“在将 nvarchar 值 'OK' 转换成数据类型 int 时失败”