gpt4 book ai didi

sql - 使用数据来命名列

转载 作者:行者123 更新时间:2023-12-02 09:13:27 24 4
gpt4 key购买 nike

我有 2 个表,我想运行一个查询,在其中使用其中一个表中的值来更改 dateadd 所使用的列。

table1
id value date1 date2 date3
-------|-------|------------|------------|-----------|
1 | 10 | 04/03/2018 | 04/03/2017 |01/03/2016 |
2 | 1 | 04/03/2018 | 05/03/2015 |02/03/2018 |
3 | 2 | 04/03/2016 | 06/03/2016 |03/03/2018 |
4 | 1 | 04/03/2015 | 07/03/2018 |04/03/2017 |
5 | 2 | 04/03/2017 | 09/03/2018 |05/03/2019 |

table2
id value
-------|-------|
1 | date1 |
2 | date3 |
3 | date3 |
4 | date2 |
5 | date1 |

执行 ID 1 的正常方法类似于 dateadd(month,10,date1)。不过,如果我不每次都写它,我不知道如何做到这一点。

select *
from table1
join table2 on table1.id = table2.id
where DATEADD(month, table1.value, table1.[table2.value]) between '1/1/18' and '12/31/18'

最佳答案

第十二的答案是正确的。我只是想看看他的理论是否有效,而且确实有效 - 这是一个有效的实现。

declare @table1 table (id int, value int, date1 date, date2 date, date3 date)
declare @table2 table (id int, colname varchar(5))

insert into @table1 values (1,10,'04/03/2018','04/03/2017','01/03/2016')
insert into @table1 values (2,1 ,'04/03/2018','05/03/2015','02/03/2018')
insert into @table1 values (3,2 ,'04/03/2016','06/03/2016','03/03/2018')
insert into @table1 values (4,1 ,'04/03/2015','07/03/2018','04/03/2017')
insert into @table1 values (5,2 ,'04/03/2017','09/03/2018','05/03/2019')

insert into @table2 values (1, 'date1')
insert into @table2 values (2, 'date3')
insert into @table2 values (3, 'date3')
insert into @table2 values (4, 'date2')
insert into @table2 values (5, 'date1')

select id, colname, newdate
from
(
select sq.id, sq.colname, dateadd(month, sq.value, sq.dn) as newdate
from @table1 t1
unpivot
(
dn for colname in ([date1], [date2], [date3])
)sq
inner join @table2 t2 on sq.id = t2.id and sq.colname = t2.colname
)sq where newdate between '1/1/2018' and '12/31/2018'

输出:

id  colname newdate
2 date3 2018-03-03
3 date3 2018-05-03
4 date2 2018-08-03

关于sql - 使用数据来命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49544156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com