导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

请教一sql语句

qiule 2007-12-25 11:57:58
小弟学sql不久,对下面的语句有点搞不清,请大家指教下

1 select name 姓名,
(case subject when '语文' then result else 0 end) 语文,
(case subject when '数学' then result else 0 end) 数学,
(case subject when '物理' then result else 0 end) 物理
from tb

2 select name 姓名,
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '数学' then result else 0 end) 数学,
max(case subject when '物理' then result else 0 end) 物理
from tb
group by name

我想问下为什么第一条sql语句不要用group by ,而第二条语句要用group by呢
...全文
60 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihil_fs 2007-12-25
学习
回复
chen_liang747703 2007-12-25
学习!!!
回复
-狙击手- 2007-12-25
汇总用了聚合函数,所以第二个用group by
回复
pt1314917 2007-12-25

第一句没有用到max,第二句有用到max。。
用到聚合函数时需要用到group by
回复
dawugui 2007-12-25
聚合函数
聚合函数对一组值执行计算并返回单一的值。除 COUNT 函数之外,聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。

所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

仅在下列项中聚合函数允许作为表达式使用:

SELECT 语句的选择列表(子查询或外部查询)。


COMPUTE 或 COMPUTE BY 子句。


HAVING 子句。
Transact-SQL 编程语言提供下列聚合函数:

AVG MAX
BINARY_CHECKSUM MIN
CHECKSUM SUM
CHECKSUM_AGG STDEV
COUNT STDEVP
COUNT_BIG VAR
GROUPING VARP
回复
wzy_love_sly 2007-12-25
因为有聚合函数
回复
子陌红尘 2007-12-25
第一条不是汇总操作,第二条是。
回复
dawugui 2007-12-25
使用了,max,min,count(*)等的,就需要group by
回复
BoBo_32 2007-12-25
如果 SELECT 子句 <select list> 中包含聚合函数,则 GROUP BY 将计算每组的汇总值。指定 GROUP BY 时,选择列表中任意非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。
回复
gimse7en 2007-12-25
4楼搜索技能好强大啊
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告