以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  select 中的对别名列排序的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29897)

--  作者:秋叶蓝
--  发布时间:2013/3/15 23:00:00
--  select 中的对别名列排序的问题
想统计订单中成交数量最多的前三个客户,写出下面的语句
SELECT 客户,TOP 3 COUNT(*) AS 订单数 FROM {订单} GROUP BY 客户 ORDER BY 订单数
但是这样操作会报错,在网上搜了很久也没有答案,在这里请教各位了.

另外
SELECT 客户,COUNT(*) AS 订单数 FROM {订单} GROUP BY 客户 ORDER BY 订单数  这语句也报错说:至少一个参数没有指定值.
网上有篇贴子说 别名不能用于排序.那如何实现 按成交量排序呢?

图片点击可在新窗口打开查看此主题相关图片如下:2013-03-16_112348.png
图片点击可在新窗口打开查看



补充:在mysql ,sqlite中测试上面的语句是没问题的,但在foxtable 上面的语句就提示 至少一个参数没有被指定值  看来是access  不支持别名排序?!
[此贴子已经被作者于2013-3-16 11:24:07编辑过]

--  作者:夕然
--  发布时间:2013/3/15 23:56:00
--  

我帮你这样写了

执行结果这样

你大概看看

Select
TOP 3
  [Sheet1$1].客户,
  Sum([Sheet1$1].订单数)
From
  [Sheet1$] [Sheet1$1]
Group By
  [Sheet1$1].客户
Order By
  Sum([Sheet1$1].订单数) Desc

 

 


图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看

--  作者:秋叶蓝
--  发布时间:2013/3/16 11:09:00
--  
楼上的是在excel的VBA 么?
--  作者:秋叶蓝
--  发布时间:2013/3/16 15:22:00
--  
理解了,语句应该改成下面那样:
select 客户,count(*) as 订单数 from {订单} group by 客户 order by count(*) desc
也就是不能直接引用列的别名,不能直接用表中没有的列去排序,用函数去排序.
[此贴子已经被作者于2013-3-16 15:30:18编辑过]

--  作者:sunbrain
--  发布时间:2013/3/16 23:05:00
--  
以下是引用秋叶蓝在2013-3-16 11:09:00的发言:
楼上的是在excel的VBA 么?

这个是自动生成器生成的。

简单,容易理解


--  作者:夕然
--  发布时间:2013/3/16 23:09:00
--  
以下是引用秋叶蓝在2013-3-16 11:09:00的发言:
楼上的是在excel的VBA 么?

提醒一下

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=28105&replyID=&skin=1