RR_SQL 2022-10-31 19:52 采纳率: 66.7%
浏览 7

B表中有很多A表同一商品编码但是不同日期的数据,根据A表商品编码和日期,去获取最靠近B表同一商品编码,且A表日期最靠近B表日期那一行价格。

根据A表数据商品编码,日期去获取B表同一编码,且最新日期的其中一行数据。
匹配条件例子:A表.商品编码 = B表.商品编码 AND A表.日期 >= B表.日期其中最新日期的其中一行。
B表中有很多A表同一商品编码但是不同日期的数据,根据A表商品编码和日期,去获取最靠近B表同一商品编码,且A表日期最靠近B表日期那一行价格。

img

  • 写回答

1条回答 默认 最新

  • 高辉杰' 2022-11-01 14:10
    关注
      是这样吗
    WITH T1 AS (  -- 测试数据 
    SELECT '20220101' AS DT,'A01' CODE , 1  AMT UNION ALL 
    SELECT '20220102' AS DT,'A01' CODE , 2 AMT UNION ALL 
    SELECT '20220103' AS DT,'A01' CODE , 3 AMT UNION ALL 
    SELECT '20220104' AS DT,'A01' CODE , 4 AMT UNION ALL 
    SELECT '20220105' AS DT,'A01' CODE , 5  AMT UNION ALL 
    SELECT '20220106' AS DT,'A01' CODE , 6 AMT UNION ALL 
    SELECT '20220111' AS DT,'A01' CODE , 11 AMT UNION ALL
    SELECT '20220111' AS DT,'B01' CODE , 8 AMT    )  
    , T2 AS (  -- 测试数据 
    SELECT '20221031' AS DT,'A01' CODE   UNION ALL 
    SELECT '20221001' AS DT,'B01' CODE   UNION ALL 
    SELECT '20220901' AS DT,'B02' CODE   UNION ALL 
    SELECT '20220902' AS DT,'B03' CODE   UNION ALL 
    SELECT '20220903' AS DT,'B04' CODE   UNION ALL 
    SELECT '20220904' AS DT,'B05' CODE   UNION ALL 
    SELECT '20220905' AS DT,'B06' CODE   UNION ALL
    SELECT '20220906' AS DT,'B07' CODE    )  
    SELECT DISTINCT * 
    FROM (
    SELECT T1.CODE
                ,MAX(T1.DT)OVER(PARTITION BY T1.CODE ORDER BY CODE) DT 
                ,MAX(T1.AMT)OVER(PARTITION BY T1.CODE ORDER BY CODE) AMT
    FROM T2,T1 
    WHERE  T2.CODE = T1.CODE) T1 
     
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月31日

悬赏问题

  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面
  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示