gpt4 book ai didi

sql - 用于在 MSSQL 中选择查询循环的列中的字符串

转载 作者:行者123 更新时间:2023-12-02 06:28:20 26 4
gpt4 key购买 nike

我有包含字符的列:

TABLE1
======
id | divs
----------
11 | A
12 | AB
13 | C
14 | E
15 | BDE
16 | F

每个字符代表不同的分区,第二个表是:

TABLE2
======
id | div | TABLE1_id | report
------------------------------
21 | A | 11 | "Lorem ipsum 1"
22 | B | 12 | "Lorem ipsum 2"
23 | C | 13 | "Lorem ipsum 3"
24 | A | 12 | "Lorem ipsum 4"
25 | B | 15 | "Lorem ipsum 5"
26 | F | 16 | "Lorem ipsum 6"

最终报告是:

Reports
=======
TABLE1_id | TABLE2_id | div | report
------------------------------------
11 | 21 | A | "Lorem ipsum 1"
12 | 24 | A | "Lorem ipsum 4"
12 | 22 | B | "Lorem ipsum 2"
13 | 23 | C | "Lorem ipsum 3"
14 | NULL | E | NULL
15 | 25 | B | "Lorem ipsum 5"
15 | NULL | D | NULL
15 | NULL | E | NULL
16 | 26 | F | "Lorem ipsum 6"

字符数限制为 5:“ABCDE”,

我尝试了很多 SQL 查询,但显然我遗漏了一些东西,并且不知道一些重要的命令......

如何在 MSSQL 中生成该报告?

最佳答案

通常您需要一个计数表。由于您的字符串有限,您可以使用自己生成的数字

declare @t1 table (
id int
, divs varchar(5)
)
insert into @t1
values
(11, 'A')
,(12, 'AB')
,(13, 'C')
,(14, 'E')
,(15, 'BDE')
,(16, 'F')

declare @t2 table (
id int
, div varchar(5)
, TABLE1_id int
, report varchar(200)
)

insert into @t2
values
(21, 'A', 11, '"Lorem ipsum 1"')
,(22, 'B', 12, '"Lorem ipsum 2"')
,(23, 'C', 13, '"Lorem ipsum 3"')
,(24, 'A', 12, '"Lorem ipsum 4"')
,(25, 'B', 15, '"Lorem ipsum 5"')
,(26, 'F', 16, '"Lorem ipsum 6"')

select
t.id, z.id, substring(t.divs, q.n, 1), z.report
from
@t1 t
join (values (1), (2), (3), (4), (5)) q(n) on len(t.divs) >= q.n
left join @t2 z on substring(t.divs, q.n, 1) = z.div and t.id = z.TABLE1_id

关于sql - 用于在 MSSQL 中选择查询循环的列中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862976/

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