日期:2014-05-16  浏览次数:20658 次

SQL聚合函数 求助
通过以下语句创建一个表并向中添加三行数据:(bh字段和mc字段是对应的)Create table ts
(
bh int,
mc  varchar(20),
sl int)

insert into ts values (11,'bird',22)
insert into ts values (22,'dog',96)
insert into ts values (11,'bird',35)

现在要对这个表进行查询,根据bh字段进行求和汇总,同时显示bh所对应的名称。
在ACCESS中,我们可以通过如下语句:
SELECT bh ,FIRST(mc) , sum(sl) from ts group by bh

但是同样的语句,在SQL SERVER中却无法执行,因为FIRST或LAST函数在SQL中不支持。
在SQL中当然可以通过 SELECT bh , mc , sum(sl) from ts group by bh, mc 来实现同样的结果。
想请问各位高手,在SQL中没有类似FIRST功能的函数?
------解决方案--------------------
SELECT bh ,max(mc) , sum(sl) from ts group by bh


OR

SELECT bh ,min(mc) , sum(sl) from ts group by bh

------解决方案--------------------
Create table ts
(
bh int,
mc  varchar(20),
sl int)

insert into ts values (11,'bird',22)
insert into ts values (22,'dog',96)
insert into ts values (11,'bird',35)


select bh,mc,sl,sum(sl)over(partition by bh)as 汇总 from ts

bh          mc                   sl          汇总
----------- -------------------- ----------- -----------
11          bird                 22          57
11          bird                 35          57
22          dog                  96          96

(3 行受影响)