SQL分组后采用LAST函数查询时字段位置的秘密

 

SQL分组后采用LAST函数查询时,字段位置将影响到每个组的查询结果的排序规律。如果采用了LAST函数来获得最后一条查询结果,有效的排序是很重要的。

 

例子:

ACCESS 视图设计(一):

SELECT 杆塔信息.编号,监控常规数据.时间, 监控常规数据.线路名称, 监控常规数据.杆塔号, 监控常规数据.杆塔名称, (监控常规数据.SIM卡ID) AS SIM卡号, 监控常规数据.A相雷击次数, 监控常规数据.B相雷击次数, 监控常规数据.C相雷击次数
FROM 监控常规数据 INNER JOIN 杆塔信息 ON 监控常规数据.SIM卡ID=杆塔信息.SIM卡号
UNION SELECT 编号,#1999 - 01 - 01 12:01:01#, 线路名称, 杆塔号, 杆塔名称, SIM卡号, 0 AS A相雷击总数, 0 AS B相雷击总数, 0 AS C相雷击总数
FROM 杆塔信息
ORDER BY 时间;

 

ACCESS 视图设计(二):

SELECT 杆塔信息.编号, 监控常规数据.线路名称, 监控常规数据.杆塔号, 监控常规数据.杆塔名称, (监控常规数据.SIM卡ID) AS SIM卡号, 监控常规数据.A相雷击次数, 监控常规数据.B相雷击次数, 监控常规数据.C相雷击次数
FROM 监控常规数据 INNER JOIN 杆塔信息 ON 监控常规数据.SIM卡ID=杆塔信息.SIM卡号
UNION SELECT 编号, 线路名称, 杆塔号, 杆塔名称, SIM卡号, 0 AS A相雷击总数, 0 AS B相雷击总数, 0 AS C相雷击总数
FROM 杆塔信息

ORDER BY 时间;

 

 

通过这个视图分组查询:

    strSQL = "SELECT 编号, 线路名称, 杆塔号, 杆塔名称, SIM卡号, " & _
                    "LAST(A相雷击次数) AS A相雷击总数," & _
                    "LAST(B相雷击次数) AS B相雷击总数, " & _
                    "LAST(C相雷击次数) AS C相雷击总数 " & _
               "FROM 视图_杆塔雷击总数 " & _
           "GROUP BY 编号, 线路名称, 杆塔号, 杆塔名称, SIM卡号 " & _
           "ORDER BY 编号, 线路名称, 杆塔号, 杆塔名称, SIM卡号 "

 

 

总结:

      1.采用CCESS 视图设计(一),【时间】字段为第二列,分组后采用LAST函数查询时【雷击总次数】将以日期为顺序。

      2.采用CCESS 视图设计(二),【时间】字段为末尾列,分组后采用LAST函数查询时【雷击总次数】将以【A相雷击总数】为顺序。因为这个字段值在列顺序中靠前。

 

SQL查询没有指定排序时,就以字段先后顺序的字段值优先排序。

 

 

 

 

 

                                    作者:段利庆    QQ:14035344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值