计算两个 table 条目之间的天数差异并使用 SQL 服务器在另一个 table 中更新它
To calculate Number of days difference between two tables entries and update it in another table using SQL server
enter image description here我有两个 tables A 和 B,其中 A 仅包含今天的数据,B 包含历史数据,
两个 table 都具有相同的属性 - pcode、product、market、pceneter、date。其中除了 table 的日期外,所有列都具有相同的条目 A 日期是今天的日期,B 日期是 table
中的第一个条目日期
我正在尝试计算 A table 在 B
中可用的记录的日差
Example: Table A
code product market center date No.of Days
X1 abcd IT04 2G 17/9/2021 0
X1 efgh ER90 MB 17/9/2021 0
Y5 ijkl OK09 MB 17/9/2021 0
Table B
code product market center date
X1 abcd IT04 2G 15/9/2021
X1 efgh ER90 MB 16/9/2021
X1 abcd IT04 2G 11/9/2021
X1 efgh ER90 C8 11/9/2021
预期输出 - Table A 表 B 中可用的每个记录的日期差异应更新天数
Example: Table A
code product market center date No.of Days
X1 abcd IT04 2G 17/9/2021 6
X1 efgh ER90 MB 17/9/2021 1
Y5 ijkl OK09 MB 17/9/2021 0
my solution:
1. I grouped the table B to get the minimum date with other columns.
2. Afterwards, i joined this subquery and table B to match and subtruct dates
注意:我可能会遇到一些语法问题,因为我没有任何数据/table 来测试它。但我希望你明白逻辑......
select a.*, DATEDIFF(day, a.date, h.date) as no_of_days
from table_a a
left join (select code, product, market, center, min(date) date
from table_b
group by code, product, market, center) h
on a.code = h.code
and a.product = h.product
and a.market = h.market
and a.center = h.center
enter image description here我有两个 tables A 和 B,其中 A 仅包含今天的数据,B 包含历史数据, 两个 table 都具有相同的属性 - pcode、product、market、pceneter、date。其中除了 table 的日期外,所有列都具有相同的条目 A 日期是今天的日期,B 日期是 table
中的第一个条目日期我正在尝试计算 A table 在 B
中可用的记录的日差Example: Table A
code product market center date No.of Days
X1 abcd IT04 2G 17/9/2021 0
X1 efgh ER90 MB 17/9/2021 0
Y5 ijkl OK09 MB 17/9/2021 0
Table B
code product market center date
X1 abcd IT04 2G 15/9/2021
X1 efgh ER90 MB 16/9/2021
X1 abcd IT04 2G 11/9/2021
X1 efgh ER90 C8 11/9/2021
预期输出 - Table A 表 B 中可用的每个记录的日期差异应更新天数
Example: Table A
code product market center date No.of Days
X1 abcd IT04 2G 17/9/2021 6
X1 efgh ER90 MB 17/9/2021 1
Y5 ijkl OK09 MB 17/9/2021 0
my solution:
1. I grouped the table B to get the minimum date with other columns.
2. Afterwards, i joined this subquery and table B to match and subtruct dates
注意:我可能会遇到一些语法问题,因为我没有任何数据/table 来测试它。但我希望你明白逻辑......
select a.*, DATEDIFF(day, a.date, h.date) as no_of_days
from table_a a
left join (select code, product, market, center, min(date) date
from table_b
group by code, product, market, center) h
on a.code = h.code
and a.product = h.product
and a.market = h.market
and a.center = h.center