[急] Group By分组失效,在线等...

阿胡、 2012-08-30 10:58:28


SELECT h.ID,h.RoomID,h.HotelID,h.RoomTypeID,h.RoomTypeName,o.ID,OccupancyID,
o.TeamName,t.DRoom_Price,t.TRoom_Price,t.TRoom_OverTime,ROW_NUMBER() over(order by Occupancyid) as rowno,
RoomNum = STUFF((SELECT ',' + CAST(RoomNum AS NVARCHAR(MAX))
FROM StayHistory WHERE (Occupancyid = h.Occupancyid)
FOR XML PATH ('')),1,1,'')
from StayHistory h,Occupancy o,RoomType t
where h.OccupancyID=o.ID And h.RoomTypeID=t.ID And h.IsCheckOut=0
group by o.ID,h.ID,h.RoomID,h.HotelID,h.RoomTypeID,h.RoomTypeName,OccupancyID,
o.TeamName,t.DRoom_Price,t.TRoom_Price,t.TRoom_OverTime


结果
540 48 1810 6 豪华单人房 300 300 600.00 100.00 15 7 3002
541 51 1810 7 豪华双人房 301 301 700.00 100.00 15 8 4001
542 53 1810 7 豪华双人房 302 302 700.00 100.00 15 9 4002
557 10 1810 4 标准单人房 312 312 123 400.00 100.00 15 10 1008,1009,1002
558 11 1810 4 标准单人房 312 312 123 400.00 100.00 15 11 1008,1009,1002
559 4 1810 4 标准单人房 312 312 123 400.00 100.00 15 12 1008,1009,1002


为什么Group By 没有效果,求大神在线等,急..~
...全文
447 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangsuming123 2012-08-30
  • 打赏
  • 举报
回复
SELECT o.id,Occupancyid,o.CustomerName,o.CustomerType,o……

Aizhimeng 2012-08-30
  • 打赏
  • 举报
回复
学习了,谢谢楼主和各层的筒子们
Z_X_S_ 2012-08-30
  • 打赏
  • 举报
回复
这个你懂得
阿胡、 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:
引用 3 楼 的回复:
引用 2 楼 的回复:
引用 1 楼 的回复:
你有了group by,但没聚合函数,当然没效果

我之前有写和这个一样的查询, 也没有用到聚合函数,

你既然没有用到聚合函数,那就没必要用group by了



SQL code


SELECT o.id,Occupancyid,o.CustomerName,o.C……
[/Quote]

已经解决了,知道是什么原因了,谢谢啊
lamudaisy 2012-08-30
  • 打赏
  • 举报
回复
你需要显示成什么结果?当前显示已经是Group后的值,RoomID不重复。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
引用 2 楼 的回复:
引用 1 楼 的回复:
你有了group by,但没聚合函数,当然没效果

我之前有写和这个一样的查询, 也没有用到聚合函数,

你既然没有用到聚合函数,那就没必要用group by了



SQL code


SELECT o.id,Occupancyid,o.CustomerName,o.CustomerType,o……
[/Quote]
哦,那我了解你的意思,你是用这个作过滤重复数据的。
那你所说的没效果是什么意思?
阿胡、 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:
引用 1 楼 的回复:
你有了group by,但没聚合函数,当然没效果

我之前有写和这个一样的查询, 也没有用到聚合函数,

你既然没有用到聚合函数,那就没必要用group by了
[/Quote]



SELECT o.id,Occupancyid,o.CustomerName,o.CustomerType,o.TeamName,o.CustomerTelphone,o.DiscountName,
o.DiscountOfStandards,o.LeaveTime,o.Deposit,s.StayTime,ROW_NUMBER() over(order by Occupancyid) as rowno,
RoomNum = STUFF((SELECT ',' + CAST(RoomNum AS NVARCHAR(MAX))
FROM StayHistory WHERE (Occupancyid = s.Occupancyid)
FOR XML PATH ('')),1,1,'')
FROM Occupancy o,StayHistory s
WHERE o.id=s.Occupancyid and o.TeamName<>'' and s.IsCheckOut=0
group by o.id,Occupancyid,o.CustomerName,o.CustomerType,o.TeamName,o.CustomerTelphone,o.DiscountName,
o.DiscountOfStandards,o.LeaveTime,o.Deposit,s.StayTime


这段sql 加group by 的话 结果就只有一条数据
结果:
312 312 123 2 123 1 无折扣 100 2012-08-30 12:30:00.000 500.00 2012-08-29 10:08:00.000 1 1008,1009,1002

如果不加group by 的话,
结果:
312 312 123 2 123 1 无折扣 100 2012-08-30 12:30:00.000 500.00 2012-08-29 10:08:00.000 1 1008,1009,1002
312 312 123 2 123 1 无折扣 100 2012-08-30 12:30:00.000 500.00 2012-08-29 10:08:00.000 2 1008,1009,1002
312 312 123 2 123 1 无折扣 100 2012-08-30 12:30:00.000 500.00 2012-08-29 10:08:00.000 3 1008,1009,1002
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:
你有了group by,但没聚合函数,当然没效果

我之前有写和这个一样的查询, 也没有用到聚合函数,
[/Quote]
你既然没有用到聚合函数,那就没必要用group by了
阿胡、 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你有了group by,但没聚合函数,当然没效果
[/Quote]
我之前有写和这个一样的查询, 也没有用到聚合函数,
  • 打赏
  • 举报
回复
你有了group by,但没聚合函数,当然没效果

34,588

社区成员

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

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