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,数量,类别这样就没有 分组效果了 全都显示出来了我想问问 怎么可以 即调出其他字段  有可以只按 名称来分组?

解决方案 »

  1.   

    group by表示,根据你所要直接选择的列,进行编组,计算列除外.
    如果你的数据行中有一列值不一样,电脑就不能精确的知道,你想归为哪一组,所以这种功能还是不提供的好.
      

  2.   


    Select 名称,max(ID),max(数量),min(类别) From TB Group By 名称
      

  3.   


    Select ID,名称,数量,类别 From TB Group By 名称,ID,数量,类别这样就没有 分组效果了 全都显示出来了--肯定了,你看看你两个篮球的类别是不一致的,那你分组之后肯定不一样了
      

  4.   


    这样就没有 分组效果了 全都显示出来了我想问问 怎么可以 即调出其他字段 有可以只按 名称来分组?
    --你每个ID是不一样的,调出其他字段 有可以只按 名称来分组?可能吗?被你搞晕了
    --那你足球的ID显示4啊还是7,楼主你思路不清啊?
      

  5.   


    --我猜你是想要这样效果吧create table TestGroup
    (
    id int,
    name varchar(10),
    Amount int,
    category int)
    insert into TestGroup values (1, '羽毛球',  1, 0)
    insert into TestGroup values (2 ,'乒乓球' , 2, 1)
    insert into TestGroup values (3 ,'篮球',  0, 3)
    insert into TestGroup values (4 ,'足球'  , 0 ,5)
    insert into TestGroup values (5, '排球' , 10, 0)
    insert into TestGroup values (6 ,'篮球',  5, 1)
    insert into TestGroup values (7 ,'足球 ', 10, 0)Select name From TestGroup Group By name
    select distinct id, name,sum(amount) over (partition by name) as  amount , category from TestGroup
      

  6.   

    我想实现的是这种效果两个表
    一个表里面 记录的 是 物品名称ID  名称 
    1   蓝球
    2   足球
    3   乒乓球
    4   羽毛球
    另一个表里面 是数量 状态
    状态有两种  一种是 好“0”  一种是坏 “1”ID  产品ID   数量   状态 
    1     1       1       1
    2     1       5       0
    3     2       5       0
    做错来以后的表效果ID  名称    好的  坏的
    1   蓝球     5      1
    2   足球     5      0    
    SELECT ([CpName].[Name]) AS [产品名称],([chanpin].[ID]) AS [ID], 
    Sum(Case When [chanpin].[状态] = 0 Then [chanpin].[Num] Else 0 End) AS [好的产品数量], 
    Sum(Case When [chanpin].[状态] = 1 Then [chanpin].[Num] Else 0 End) AS [坏的产品数量]  
    FROM [chanpin] Left Outer JOIN [CpName] ON  [chanpin].[NameID] = [CpName].[ID] group by [chanpin].[ID],[ChanPin].[NameID],[CpName].[Name]因为我的产品名称 型号规格都在一个表里面   状态数量在令一个表里面我想 调出 产品的数量 状态 如果  group by [chanpin].[ID],[ChanPin].[NameID],[CpName].[Name]  这样的话 调出来的信息就不是我要的效果了 而是 根据产品规格表里面列出的 产品总类全部显示出来了ID  名称    好的  坏的
    1   蓝球     5      0
    2   蓝球     0      1
    3   足球     5      0
    4   乒乓球   0      0
    5   羽毛球   0      0  
      

  7.   

    非分组列多个值变一个值,需要使用聚合函数
    avg 求平均,sum 求和,max 求最大值,min 求最小值,count 求数据条数
    例如 select avg(amount) as amount,名称 from 表 group by 名称
      

  8.   

    不知道你是不是有个行列转换的意思?
    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') B
    where A.ProcutId=B.ProcutId and C.ProuctId=B.ProcutIdName ProcutId 好的 坏的
    篮球 1 1 5
    足球 2 1 5
      

  9.   


    执行提示 
    服务器: 消息 156,级别 15,状态 1,行 4
    在关键字 'over' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,行 5
    在关键字 'over' 附近有语法错误。
      

  10.   

    我的 物料名称  和数量状态 是放在两个表里面的我想以 数量表里面的 现有数 进行排序  但是调去的时候肯定要调用物料表里面的名称 规格 等一些资料这样的话 排序  group by  就要把物料表里面需要的字段一块写在后面才能显示但是这样的 如果有 上百种物料名称 用 group by   而数量表里面只有几条数据 哪 调用出来 每个物料名称不是都要显示一边问题是我使用 Sum(Case When [chanpin].[状态] = 0 Then [chanpin].[Num] Else 0 End) AS [好的产品数量]把相同种类  相同状态的 数量进行了求和 所以必须用到  分组
      

  11.   


    select id, name,sum(amount) over (partition by name) as  amount , category from TestGroupSELECT 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