存储过程中的排序问题

jntvip 2003-08-19 10:43:43
在临时表#Report中插入数据,先插入每个客户的期初数,然后插入一定日期内的发生数,在插入每个客户每月发生合计(group by kh,month),最后插入每个客户的累计数(group by kh)。然后要将按客户编码、月份、日期、单据号排序的数据插入到另一张临时表#ReportSC,sql语句是:
select month,day,billcode,zy,md,mc,ye
from #Report a inner join kh on a.khid=kh.khid
order by khcode,month,day,billcode

然后查询#reportSC,排序有些混乱,数据是按客户进行分组排序的,但每个客户的顺序是不正确的,这该怎样解决呢
...全文
276 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
changechange 2003-08-21
  • 打赏
  • 举报
回复
其实,要解决这个问题非常简单,第一排序就是按客户,你可以在客户后面再加一个字符生成一个主排序字段就可以了( order by 客户,排序字符,日期....) ,比如

期初 客户1 u
明细 客户1 v
合计 客户1 w
总计 客户1 x

你在用insert into的时候就可以生成这个字段了。
zjcxc 2003-08-21
  • 打赏
  • 举报
回复
那你在创建临时表后,创建一个索引来让它排序吧

CREATE CLUSTERED INDEX IX_temp_Report ON #Report
(
客户编号
)
jntvip 2003-08-20
  • 打赏
  • 举报
回复
加过,排序也不对,但顺序和没加是不一样的
zjcxc 2003-08-20
  • 打赏
  • 举报
回复
那你在插入临时表中增加一个标识(identity)字段试试
jntvip 2003-08-20
  • 打赏
  • 举报
回复
select month,day,billcode,zy,md,mc,ye
from #Report a inner join kh on a.khid=kh.khid
order by 客户编号,month,day,billcode
结果正确,
将结果集插入另一临时表,结果改变
zjcxc 2003-08-20
  • 打赏
  • 举报
回复
查询临时表的时候加上order by 结果是否正确?
jntvip 2003-08-20
  • 打赏
  • 举报
回复
select month,day,billcode,zy,md,mc,ye
from #Report a inner join kh on a.khid=kh.khid
order by 客户编号,month,day,billcode
的写法,单独查询,结果正确,
例: AAJE 联想 1 1 00001 200 0 200
AAJE 联想 1 2 00002 300 0 500
AAJE 联想 1 本期合计 500 0 500
.
.
QQMN
QQMN
SSBN
..
ZZMN 郑州
ZZMN
..
QQMN
然后将查询结果插入另一个临时表,查询另一个临时表,结果不正确,应该是按字母顺序排列的,现在却截断后面的数据插到了中间
CrazyFor 2003-08-20
  • 打赏
  • 举报
回复
#Report增加一列,就叫它排序列吧,手工控制每次插入数据的顺序.
pengdali 2003-08-20
  • 打赏
  • 举报
回复

你每个客户有编号来区分他们的先后吗?

select month,day,billcode,zy,md,mc,ye
from #Report a inner join kh on a.khid=kh.khid
order by 客户编号,month,day,billcode
liuyun2003 2003-08-20
  • 打赏
  • 举报
回复
看客户的需求啊。然后你再加相应的处理。
zjcxc 2003-08-20
  • 打赏
  • 举报
回复
加多一个排序标识:sortid
期初为0,本月合计为1,累计为2

排序的时候再加这个排序标识来排序就行了:
select month,day,billcode,zy,md,mc,ye
from #Report a inner join kh on a.khid=kh.khid
order by khcode,sortid,month,day,billcode
hjb111 2003-08-20
  • 打赏
  • 举报
回复
如果是按照客户排序的话,应当是:
select month,day,billcode,zy,md,mc,ye
from #Report a inner join kh on a.khid=kh.khid
order by khcode
就可以了!
txlicenhe 2003-08-20
  • 打赏
  • 举报
回复
是有点乱,不知道楼主想怎样order by。
amtyuranus 2003-08-20
  • 打赏
  • 举报
回复
那你查询时加上order by 不就可以
jntvip 2003-08-20
  • 打赏
  • 举报
回复
先创建好的,用查询语句直接生成也是排序混乱,但是顺序和创建好的不一样
zjcxc 2003-08-20
  • 打赏
  • 举报
回复
你的临时表是先创建好的,还是用查询语句直接生成的?

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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