Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

查询能否按一定条件排序

Lee  发表于:2011-07-20 14:30:09  
复制

在SQL中我已用“ORDER BY 供应商”进行了排序(如下图),结果虽然能把名称相同的供应商排列在一起,但我想把所有“XX部”的供应商先排列在一起(例如图中的五金部和注塑部),然后才把其它不是XX部的再进行排序,不知能否这样呢?语句应怎样写?

 

 

 

 

Top
煮江品茶 发表于:2011-07-20 14:40:43

ORDER BY 子句写成如下:

ORDER BY Right(供应商,1)="部",供应商



西出阳关无故人 发表于:2011-07-20 14:42:00

增加一列辅助排序,例如

SELECT * FROM 供应商表 ORDER BY IIf([供应商] Like '*公司*',1,2), 供应商

其中:IIf([供应商] Like '*公司*',1,2),就是辅助列,意思是把包含“公司”的供应商优先排序,不包含公司的另外排序



丘山 发表于:2011-07-20 16:34:19
没有直接的办法,只能采用变通的方法,上面的解法均可

zhcosin 发表于:2011-07-20 16:47:33

思路其实很简单,就跟字典排序道理一样,先看第一个字母,谁在前就排前,若第一个字母相同则看第二个字母,以此类推……



Lee 发表于:2011-07-21 09:07:07

请问煮江先生,“ORDER BY Right(供应商,1)="部",供应商”不能在联合查询中运行吗?我的联合查询如下:

SELECT PO, 产品编号, 供应商, 订单1层欠料 AS 欠料 FROM 订单1层欠料 UNION SELECT PO, 产品编号, 供应商, 订单2层欠料 AS 欠料 FROM 订单2层欠料 UNION SELECT PO, 产品编号, 供应商, 订单3层欠料 AS 欠料 FROM 订单3层欠料 UNION SELECT PO, 产品编号, 供应商, 订单4层欠料 AS 欠料 FROM 订单4层欠料 UNION SELECT PO, 产品编号, 供应商, 订单5层欠料 AS 欠料 FROM 订单5层欠料
ORDER BY Right(供应商,1)="部",供应商;

运行后弹出如下错误提示窗口:



Lee 发表于:2011-07-21 09:31:53
如在原来联合查询的基础上新建一个查询,则煮江品茶先生和西出阳关先生的方法都可行。

总记录:6篇  页次:1/1 9 1 :