随、风 2024-03-16 09:45 采纳率: 28.6%
浏览 3
已结题

数据库进阶-数据处理

SQL server有以下两个表。分别为表A,表B
表A:

LineModelYearMonthNums
Aaa20241月154
Aaa20242月123

表B:

LineModelYearMonthChangeDayAfterNums
AAaa20242月2024-02-04123

SQL server中,将这两个表组合关联处理获取到以下的表C内容:

LineModelDayTZ
Aaa2024-01-01154
Aaa2024-01-02154
Aaa2024-01-03154
Aaa2024-01-04154
Aaa2024-01-05154
Aaa2024-01-06154
Aaa2024-01-07154
Aaa2024-01-08154
Aaa2024-01-09154
Aaa2024-01-10154
Aaa2024-02-03154
Aaa2024-02-04123
Aaa2024-02-04124
Aaa2024-02-04125

表C中的。表示按照规律直到表B的日期出现,则表C的TZ值变更为表B的AfterNums值,再次按照日期逐天的规律直到下一个表B的内容出现。表A和表B可通过Model连接。问:在SQL server中,如何将这表A、表B组合关联处理获取到表C内容?

  • 写回答

3条回答 默认 最新

  • 关注

    随、风 上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    要将表A和表B组合关联处理获取到表C的内容,可以按照以下步骤进行操作:

    1. 使用JOIN语句将表A和表B连接起来,连接条件是Model相等。

      SELECT A.Line, A.Model, A.Year, A.Month, A.Nums, B.ChangeDay, B.AfterNums
      FROM tableA A
      JOIN tableB B ON A.Model = B.Model
      
    2. 使用日期生成表格的技巧,可以通过WITH子句生成一个日期表,包含所有需要的日期范围。例如,可以使用一个递归CTE(Common Table Expression)来生成日期范围。

      WITH DateRange AS (
       SELECT MIN(ChangeDay) AS MinDate, MAX(ChangeDay) AS MaxDate
       FROM tableB
       UNION ALL
       SELECT DATEADD(DAY, 1, MinDate), MaxDate
       FROM DateRange
       WHERE DATEADD(DAY, 1, MinDate) <= MaxDate
      )
      
    3. 将生成的日期范围与连接后的结果集进行关联,以获取表C的内容。关联条件是日期在ChangeDay之前或者等于ChangeDay。

      SELECT A.Line, A.Model, DateRange.Date AS Day, A.Nums AS TZ
      FROM DateRange
      JOIN (
       SELECT A.Line, A.Model, A.Year, A.Month, A.Nums, B.ChangeDay, B.AfterNums
       FROM tableA A
       JOIN tableB B ON A.Model = B.Model
      ) AS A ON A.ChangeDay >= DateRange.Date
      AND (A.ChangeDay = DateRange.Date OR NOT EXISTS (
       SELECT 1
       FROM tableB
       WHERE ChangeDay > A.ChangeDay
       AND Line = A.Line
       AND Model = A.Model
      ))
      

      关键点:

      • 使用CTE生成日期范围
      • 使用JOIN语句将结果集与日期范围关联
      • 使用子查询和NOT EXISTS语句来确定日期范围内最后一个ChangeDay
    4. 最后,根据需要对表C进行排序和筛选。

      ORDER BY A.Line, A.Model, DateRange.Date
      

    通过以上步骤,就可以将表A和表B组合关联处理获取到表C的内容。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月20日
  • 创建了问题 3月16日

悬赏问题

  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上
  • ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用
  • ¥15 ESP-IDP-BLE配网连接wifi