当前位置: 代码迷 >> Sql Server >> Group By 多字段怎么使用
  详细解决方案

Group By 多字段怎么使用

热度:24   发布时间:2016-04-27 10:59:54.0
Group By 多字段如何使用?
ID 名称 数量 类别
1 羽毛球 1 0
2 乒乓球 2 1
3 篮球 0 3
4 足球 0 5
5 排球 10 0
6 篮球 5 1
7 足球 10 0

数据表如下 我想通过 名称来分组

Select 名称 From TB Group By 名称

这样 显示 效果正确 从夫的主球 和重复的 篮球 只显示一个

但是 如还像 同时 调用出来 数量 ID 类别

Select ID,名称,数量,类别 From TB Group By 名称,ID,数量,类别

这样就没有 分组效果了 全都显示出来了

我想问问 怎么可以 即调出其他字段 有可以只按 名称来分组?

------解决方案--------------------
SQL code
Select 名称,max(ID),max(数量),min(类别) From TB Group By 名称
------解决方案--------------------
不知道你是不是有个行列转换的意思?

SQL code
CREATE TABLE Ball(    ProuctId int,    Name varchar(20)) insert into Ball values (1,'篮球')insert into Ball values (2,'足球')insert into Ball values (3,'乒乓球')insert into Ball values (4,'羽毛球')Create Table BallInfo(    Id int,    ProcutId int,    Amount int,    Status bit)insert into BallInfo values (1, 1 ,1 ,1)insert into BallInfo values (2 ,1 ,5 ,0)insert into BallInfo values (3, 2 ,5, 0)insert into BallInfo values (4 ,2 ,1, 1)select C.Name,A.ProcutId, A.好的,B.坏的 from Ball C,(select ProcutId,SUM(Amount)over (partition by ProcutId,Status) as 好的 from ballInfo where status='1') A ,(select ProcutId,SUM(Amount)over (partition by ProcutId,Status) as 坏的 from BallInfo where Status='0') Bwhere A.ProcutId=B.ProcutId and C.ProuctId=B.ProcutIdName    ProcutId    好的    坏的篮球    1    1    5足球    2    1    5
------解决方案--------------------

select id, name,sum(amount) over (partition by name) as amount , category from TestGroup

SELECT ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY amount,category),id,name,amount,category from TestGroup

这样的结果吗

3 篮球 0 3
6 篮球 5 1
5 排球 10 0
2 乒乓球 2 1
1 羽毛球 1 0
4 足球 0 5
7 足球 10 0
  相关解决方案