请教一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呢
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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楼搜索技能好强大啊

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧