1. Dim sql As String = " SELECT xp.*, "
  2. sql = sql + " xf_owner.ownername, "
  3. sql = sql + " xf_receiver.receivename, "
  4. sql = sql + " lastprice = "
  5. sql = sql + " ( "
  6. sql = sql + " SELECT TOP 1 "
  7. sql = sql + " lp.tonprice "
  8. sql = sql + " FROM "
  9. sql = sql + " ( "
  10. sql = sql + " SELECT * "
  11. sql = sql + " FROM xf_price "
  12. sql = sql + " WHERE pk_price IN ( "
  13. sql = sql + " SELECT TOP 2 "
  14. sql = sql + " pk_price "
  15. sql = sql + " FROM xf_price "
  16. sql = sql + " WHERE pk_pricegroup = xp.pk_pricegroup "
  17. sql = sql + " AND pk_owner = xp.pk_owner "
  18. sql = sql + " AND pk_receiver = xp.pk_receiver "
  19. sql = sql + " ORDER BY enabletime DESC "
  20. sql = sql + " ) "
  21. sql = sql + " ) lp "
  22. sql = sql + " ORDER BY lp.enabletime ASC "
  23. sql = sql + " ), "
  24. sql = sql + " transname = CASE "
  25. sql = sql + " WHEN transtype = 0 THEN "
  26. sql = sql + " '外部运输' "
  27. sql = sql + " WHEN transtype = 1 THEN "
  28. sql = sql + " '厂内转运' "
  29. sql = sql + " ELSE "
  30. sql = sql + " '厂外转运' "
  31. sql = sql + " END "
  32. sql = sql + " FROM xf_price xp "
  33. sql = sql + " LEFT JOIN xf_owner "
  34. sql = sql + " ON xf_owner.pk_owner = xp.pk_owner "
  35. sql = sql + " LEFT JOIN xf_receiver "
  36. sql = sql + " ON xf_receiver.pk_receiver = xp.pk_receiver "
  37. sql = sql + " WHERE xp.dr = 0 "
  38. sql = sql + " AND xp.pk_pricegroup = @pk_pricegroup "
  39. sql = sql + " AND pk_price IN ( "
  40. sql = sql + " SELECT TOP 1 "
  41. sql = sql + " pk_price "
  42. sql = sql + " FROM xf_price "
  43. sql = sql + " WHERE pk_pricegroup = xp.pk_pricegroup "
  44. sql = sql + " AND pk_owner = xp.pk_owner "
  45. sql = sql + " AND pk_receiver = xp.pk_receiver "
  46. sql = sql + " ORDER BY enabletime DESC "
  47. sql = sql + " ) "
  48. sql = sql + " ORDER BY xp.enabletime DESC; "
  49. Dim com As New SqlClient.SqlCommand(sql, strCon)
  50. com.Parameters.Add(New SqlClient.SqlParameter("@pk_pricegroup", pk_pricegroup))
  51. Dim ds As New DataSet
  52. Dim adapter As New SqlClient.SqlDataAdapter(com)
  53. strCon.Open()
  54. adapter.Fill(ds, "xf_price")
  55. strCon.Close()
  56.  
  57. 主要思路:先取整体结果集,然后条件取按时间倒序排第一条记录的主键,然后有个字段需要取上一次修改的结果值(别名lastprice,即上次修改的值tonprice),则采用先TOP 2 取两条数据,然后按时间倒序排,再TOP 1取第一条便是上一次修改的结果值。
    注意xf_price xp 的妙用,可以解决当主键条件取第一条时只显示一条返回记录的问题。

Sql_从查询的结果集中分组后取最后有效的数据成新的结果集小记(待优化)的更多相关文章

  1. MSSQL—按照某一列分组后取前N条记录

    以前在开发的时候遇到过一个需求,就是要按照某一列进行分组后取前几条数据,今天又有同事碰到了,帮解决了之后顺便写一篇博客记录一下. 首先先建一个基础数据表,代码如下: IF OBJECT_ID(N'Te ...

  2. MSSQL 分组后取每组第一条(group by order by)

    查询中经常遇到这种查询,分组后取每组第一条.分享下一个SQL语句: --根据 x 分组后.根据 y 排序后取第一条 select * from ( select ROW_NUMBER() over(p ...

  3. SQL Server 分组后取Top N

    SQL Server 分组后取Top N(转) 近日,工作中突遇一需求:将一数据表分组,而后取出每组内按一定规则排列的前N条数据.乍想来,这本是寻常查询,无甚难处.可提笔写来,终究是困住了笔者好一会儿 ...

  4. 记一次有意思的 SQL 实现 → 分组后取每组的第一条记录

    开心一刻 今天,朋友气冲冲的走到我面前 朋友:我不是谈了个女朋友,谈了三个月嘛,昨天我偷看她手机,你猜她给我备注什么 我:备注什么? 朋友:舔狗 2 号! 我一听,气就上来了,说道:走,找她去,这婆娘 ...

  5. SQL获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)

    获取分组后取某字段最大一条记录 方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from t ...

  6. Oracle分组后取某列最大值的行数据

    select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname ...

  7. Sql语句groupBY分组后取最新一条记录的SQL

    一.问题 groupBY分组后取最新一条记录的SQL的解决方案. 二.解决方案 select Message,EventTime from PT_ChildSysAlarms as a where E ...

  8. SQL 分组后取最小行号记录

    本示例测试两个表联接查询后,分组并取分组后的最小行号记录 测试表: tb1表结构如下: CREATE TABLE [dbo].[tb1]( ) NOT NULL, ) NULL, ) NULL, CO ...

  9. SQL数据分组后取最大值或者取前几个值(依照某一列排序)

    今日做项目的时候,项目中遇到须要将数据分组后,分组中的最大值,想了想,不知道怎么做.于是网上查了查,最终找到了思路,经过比較这个查询时眼下用时最快的,事实上还有别的方法,可是我认为我们仅仅掌握最快的方 ...

随机推荐

  1. ES6-let、const和块级作用域

    1.介绍 总的来说,ES6是在ES2015的基础上改变了一些书写方式,开放了更多API,这样做的目的最终还是为了贴合实际开发的需要.如果说一门编程语言的诞生是天才的构思和实现,那它的发展无疑就是不断填 ...

  2. android学习-仿Wifi模块实现

    最近研究android内核-系统关键服务的启动解析,然而我也不知道研究wifi的作用,就当兴趣去做吧(其实是作业-_-) 系统原生WiFI功能大概有:启动WiFI服务,扫描WiFi信息(这个好像已经被 ...

  3. java HashMap源码分析(JDK8)

    这两天在复习JAVA的知识点,想更深层次的了解一下JAVA,所以就看了看JAVA的源码,把自己的分析写在这里,也当做是笔记吧,方便记忆.写的不对的地方也请大家多多指教. JDK1.6中HashMap采 ...

  4. centos7设置SSH安全策略–指定IP登陆

    之前自己搭建了个博客网站(理想三旬),写了些文章,但是由于一些原因慢慢将文章放在博客园了.所以这里将一些文章复制过来.便于以后自己查询. 为了服务器的安全性,我们在日常使用需要授予权限和指定ip登陆来 ...

  5. Oracle 12c 建表空间语句

    create tablespace TBS_DYS datafile 'D:/Oracle_12c/app/dingyingsi/oradata/dingyingsi/TBS_DYS.ba' size ...

  6. java开学考试感想及代码

    上周四我们的第一节java课,王老师给我们进行啦开学考试,这也是上学期放假之前给我们约定好的 但是情况显然没有我想的那么好,其实我觉得这个atm系统比上届学生信息管理系统难的多,上届的话毕竟有小学期的 ...

  7. [转]数据库中Schema(模式)概念的理解

    在学习数据库时,会遇到一个让人迷糊的Schema的概念.实际上,schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等. 如果把database看作是一个仓库,仓库很多 ...

  8. jQuery ajax - getJSON() 用法实例

    实例 从 test.js 载入 JSON 数据并显示 JSON 数据中一个 name 字段数据: $.getJSON("test.js", function(json){ aler ...

  9. jQuery设置下拉框select 默认选中第一个option

    $("#id option:first").prop("selected", 'selected');

  10. java后台工具类-通过交易码获得方法名

    import org.apache.log4j.Logger; import net.sf.json.JSONObject; public class GetResultByTransCode { p ...