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 羽毛球 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,数量,类别这样就没有 分组效果了 全都显示出来了我想问问 怎么可以 即调出其他字段 有可以只按 名称来分组?
解决方案 »
- excel导入sql的问题
- |M| SQL2005 我在企业管理器中打开表 然后在里面改数据 他不让保存 提示:错误源: Net sqlClinet Data Provider. 错误信息 ...
- 使用SQL2005的时候报错,求指导
- 排序时提示列前缀与查询中所用的表名或别名不匹配
- 如何在XP或98下安装SQL2k的服务器程序?
- 如何在一个表中控制别人select,insert和update?
- 请各位高手帮忙急!SQL Server7.0如何实现双机热备份(主机‘下线’备份自动成为网络主机)
- 如何取得最大标识列的排列序号?
- 插入时使用触发器的问题,急!!
- 救救命吧!谁知道有那个病毒或程序能占用1433的端口罗?:(
- mSSQL转Access的重大问题
- 为什么事务执行完毕后,再次调出的数据没有更新
如果你的数据行中有一列值不一样,电脑就不能精确的知道,你想归为哪一组,所以这种功能还是不提供的好.
Select 名称,max(ID),max(数量),min(类别) From TB Group By 名称
Select ID,名称,数量,类别 From TB Group By 名称,ID,数量,类别这样就没有 分组效果了 全都显示出来了--肯定了,你看看你两个篮球的类别是不一致的,那你分组之后肯定不一样了
这样就没有 分组效果了 全都显示出来了我想问问 怎么可以 即调出其他字段 有可以只按 名称来分组?
--你每个ID是不一样的,调出其他字段 有可以只按 名称来分组?可能吗?被你搞晕了
--那你足球的ID显示4啊还是7,楼主你思路不清啊?
--我猜你是想要这样效果吧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
一个表里面 记录的 是 物品名称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
avg 求平均,sum 求和,max 求最大值,min 求最小值,count 求数据条数
例如 select avg(amount) as amount,名称 from 表 group by 名称
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
执行提示
服务器: 消息 156,级别 15,状态 1,行 4
在关键字 'over' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 5
在关键字 'over' 附近有语法错误。
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