SQL不能排序的问题。

ah_2056 2013-08-26 05:50:41
select distinct  aa.CustomType,aa.LoanBlankDate,
(select BrachName from CAPS_BrachIns where ID =CAST(substring(aa.ContractNm ,2,2) as Int)) wd,
aa.CustomName,aa.ContractNm,aa.PeriodInterst,
isnull(c.receivableAmount,0),isnull(aa.PeriodInterst,0)-isnull(c.receivableAmount,0) receivebalance


from
(select b.CustomType,a.LoanBlankDate,a.CustomName,a.ContractNm,a.PeriodInterst,a.PeriodNm,a.IsAdvanceBlack
from InterestList a

left join OPSInf b on
a.ContractNm=b.LoanNm
where convert(varchar(10),LoanBlankDate,120) between '2013-08-26' and '2013-09-19'



) aa

left join

InterestReceive c on c.ContractNm=aa.ContractNm and c.PeriodNm=aa.PeriodNm and c.RepayType='PeriodInterst'
where aa.IsAdvanceBlack!='true' order by aa.CustomType,aa.LoanBlankDate,wd


一直很奇怪,这个代码最后一句排序,不能按照WD字段进行,其他2个字段可以排序
...全文
266 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
稻庄 2013-09-23
  • 打赏
  • 举报
回复
引用 4 楼 TravyLee 的回复:
当然不能按照WD字段排序,你要搞明白 order by aa.CustomType,aa.LoanBlankDate,wd是什么意思。 只有在aa.CustomType,aa.LoanBlankDate这两个字段的数据一样的情况下才会考虑按照WD来排序。 这样的写法排序时先考虑aa.CustomType,相同的时候在考虑aa.LoanBlankDate,然后再考虑WD
分析到位
  • 打赏
  • 举报
回复
当然不能按照WD字段排序,你要搞明白 order by aa.CustomType,aa.LoanBlankDate,wd是什么意思。 只有在aa.CustomType,aa.LoanBlankDate这两个字段的数据一样的情况下才会考虑按照WD来排序。 这样的写法排序时先考虑aa.CustomType,相同的时候在考虑aa.LoanBlankDate,然后再考虑WD
DBA_磊仔 2013-08-26
  • 打赏
  • 举报
回复
语法没看出问题,这个字段是name,应该是字符吧,看看数据库的排序规则
select serverproperty('Collation')
--Chinese_PRC_CI_AS
一般国内用Chinese_PRC_CI_AS这个排序规则 如果是其他的可能不符合我们的排序习惯
Shawn 2013-08-26
  • 打赏
  • 举报
回复
语法没问题。应该也不会报错。应该是楼主的逻辑有问题。说一下你的SQL的执行顺序吧: #1.from aa left join InterestReceive #2.WHERE aa.IsAdvanceBlack != 'true' #3.select后面所有字段及其计算值 #4.DISTINCT #5.ORDER BY
Andy__Huang 2013-08-26
  • 打赏
  • 举报
回复
你把distinct去掉,试试看

34,590

社区成员

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

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