【问题标题】:Insert into with interval date from lastest date other table to current date SQL Server query从其他表的最新日期插入到当前日期 SQL Server 查询的间隔日期
【发布时间】:2021-07-23 10:17:03
【问题描述】:

我想从其他表的日期参数中获取数据,并在表上使用。

例如,我有一个如下所示的 Table_A:

Table_B 是这样的:

从表 A 和 B 中,我想用来自 Table_A.last_job_updateGETDATE() 的最后日期之间的参数插入来自 Table_B 的数据,并将其插入到 Table_C

这是我的 SQL 语句:

SET IDENTITY_INSERT test.Table_A ON

INSERT INTO test.table_A (product_id, product_name, status, last_update)
    SELECT product_id, product_name, status, last_update 
    FROM test.Table_B
    WHERE last_update = (SELECT MAX(last_update) 
                         FROM test.PF_HKMN_TEST_TABLE 
                         WHERE Table_B.product_name = Table_B.product_name)

SET IDENTITY_INSERT test.table_A OFF;

从我上面的 SQL 语句中只能得到具体的日期,而不是从日期到当前日期的范围。

解决方案

table_A:来源

table_B : 日期参数

table_C : 目的地

DECLARE @Date DATETIME
SET @Date = GETDATE()

SET IDENTITY_INSERT test.table_C ON;

INSERT INTO test.table_C (product_id, product_name, status, last_update)
SELECT product_id, product_name, status, last_update
FROM test.table_A
WHERE last_update BETWEEN (select max(last_job_update) FROM test.table_B) and Date;

SET IDENTITY_INSERT test.table_C OFF;

【问题讨论】:

  • 您的预期输出是什么?我不明白only can get the specific date, not range date to currentdate 是什么意思。而且我没有看到参数

标签: sql sql-server date sql-server-2008


【解决方案1】:

对不起。我不是很明白你想要什么。什么是表 PF_HKMN_TEST_TABLE? 我试着猜测你想要什么。

WITH cteTestA
     AS (SELECT product_id, 
                last_job_update, 
                ROW_NUMBER() OVER(PARTITION BY product_id
                ORDER BY last_job_update DESC) AS rn
         FROM Table_A)
     INSERT INTO table_C
            (product_id, 
             product_name, 
             STATUS, 
             last_update
            )
     SELECT b.roduct_id, 
            b.product_name, 
            b.STATUS, 
            b.last_update
     FROM Table_B AS b
          INNER JOIN cteTestB AS ctea
          ON ctea.product_id = b.product_id
             AND b.rn = 1
     WHERE b.last_update BETWEEN ctea.last_job_update AND GETDATE();

【讨论】:

  • 感谢您的回答,我已经找到了解决方案,我已经在我的问题上添加了我的解决方案。之前谢谢你
  • @RudyTriSaputra 而不是将您的解决方案添加到您的问题中,而是将其添加为附加答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 2014-08-29
  • 1970-01-01
  • 2021-04-07
  • 2012-03-05
  • 1970-01-01
相关资源
最近更新 更多