当前位置: 首页 > 知识库问答 >
问题:

工程订单的最近交易记录日期?

唐俊英
2023-03-14

对于这个很可能很愚蠢的问题,我要提前道歉,但我在使用Crystal Reports多年后,一直在使用Google自学SQL。

我们有工程订单,可以有许多交易对他们。我想找到最近的一个,并让它返回与工程订单编号(这是一个唯一的ID)?我尝试使用MAX,但它只返回该记录的事务处理日期。

我附上了当前在SQL Server 2014 Management Studio中看到的图像,下面是我对查询的尝试。

SELECT wip.WO.WO_No
     , wip.WO.WO_Type
     , stock.Stock_Trans_Log.Part_No
     , stock.Stock_Trans_Types.Description
     , stock.Stock_Trans_Log.Qty_Change
     , stock.Stock_Trans_Log.Trans_Date
     , wip.WO.End_Date
     , wip.WO.Qty - wip.WO.Qty_Stored AS 'Qty remaining'
     , MAX(stock.Stock_Trans_Log.Trans_Date) AS 'Last Production Receipt'

FROM stock.Stock_Trans_Log 
INNER JOIN production.Part 
ON stock.Stock_Trans_Log.Part_No = production.Part.Part_No 
INNER JOIN wip.WO 
ON stock.Stock_Trans_Log.WO_No = wip.WO.WO_No 
INNER JOIN stock.Stock_Trans_Types 
ON stock.Stock_Trans_Log.Tran_Type = stock.Stock_Trans_Types.Type
WHERE (stock.Stock_Trans_Types.Type = 10) 
AND (stock.Stock_Trans_Log.Store_Code <> 'BI')
GROUP BY wip.WO.WO_No
       , wip.WO.WO_Type
       , stock.Stock_Trans_Log.Part_No
       , stock.Stock_Trans_Types.Description
       , stock.Stock_Trans_Log.Qty_Change
       , stock.Stock_Trans_Log.Trans_Date
       , wip.WO.End_Date
       , wip.WO.Qty - wip.WO.Qty_Stored
HAVING (stock.Stock_Trans_Log.Part_No BETWEEN N'2Z' AND N'9A')

查询+结果

共有1个答案

闻人越
2023-03-14

如果我的解释是正确的,你可以用下面的意思...

WITH
  sequenced_filtered_stock_trans_log AS
(
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY WO_No
                           ORDER BY Trans_Date DESC)   AS reversed_sequence_id
  FROM
    stock.Stock_Trans_Log
  WHERE
        Type        = 10
    AND Store_Code <> 'BI'
    AND Part_No    BETWEEN N'2Z' AND N'9A'
)
SELECT
  <stuff>
FROM
  sequenced_filtered_stock_trans_log   AS stock_trans_log
INNER JOIN
  <your joins>
WHERE
  stock_trans_log.reversed_sequence_id = 1

首先,这将应用where子句来筛选日志表。

应用where子句后,计算序列id。对每个分区(每个wo_no)重新启动,并从最高的trans_date开始。

如果有任何其他应该进行的筛选(通过联接或任何其他方式),这些筛选都应该在应用row_number()之前进行。

 类似资料:
  • 问题内容: 我有一张桌子,如下所示: 请注意,MyDate格式为YYMMDD,而MyTime为24小时格式。 我想用最新的MyDate和MyTime返回唯一的MyKey的结果。预期的结果将是这样的: 任何帮助都感激不尽。谢谢。 问题答案: 首先,将日期和时间列合并为日期时间,以便轻松订购它们。自从我使用Sql Server以来已经有一段时间了,但是row_number()函数和分区是一种查找由另一

  • 都是前端,base成都 1. 工行软开 提前批 腾讯会议 10分钟 成绩 口述快排 SQL怎么查询冰筛选出某个数量最多的属性 后端语言会哪些 常见的Web攻击说三个 安全工具用过哪些 为什么选工行,接受外地培训吗 后续: 拒了笔试 2. 成都兰亭集势 腾讯会议 每次30分钟 一面 常见的数据结构有哪些 面向对象特性 css盒模型,垂直水平居中 OSI七层网络结构,TCP和UDP区别 输入URL后浏

  • 问题内容: 我有一对多关系的两个数据库表。数据如下所示: 结果集: 我想删除所有应用程序,但最新的除外。换句话说,每个学生都只能将一个应用程序链接到该应用程序。使用上面的示例,数据应如下所示: 我将如何构造我的DELETE语句以过滤出正确的记录? 问题答案: 考虑到评论中的长时间讨论,请注意以下几点: 上面的语句 将 在任何正确实现语句级读取一致性的数据库上运行,而不管语句运行时对表的任何更改。

  • 问题内容: 我需要根据订单的要求交货日期来安排Postgres查询中的某些项目。因此,例如,该订单在星期一(例如20120319)有一个请求的交货,并且该订单需要在前一个工作日(20120316)进行准备。 关于最直接方法的想法?我愿意添加日期表。我认为有比使用大量case语句更好的方法:SELECT EXTRACT(DOW FROM TIMESTAMP‘2001-02-16 20:38:40’)

  • 指定amend选项执行提交的话,可以修改同一个分支最近的提交内容和注解。 主要使用的场合: 添加最近提交时漏掉的档案 修改最近提交的注解

  • 修订记录 时间 版本 备注 2017-08-01 1.0 安装、基本功能测试