【发布时间】:2021-03-18 18:59:31
【问题描述】:
我正在尝试在 SQL Server 中按行加入变量。但是,我不确定如何选择性地映射它们。我有以下内容:
declare @p1 nvarchar(max) = '[{i:1, n:"one"}]'
declare @p2 nvarchar(max) = '[{i:2, n:"two"}]'
declare @p3 nvarchar(max) = '[{i:3, n:"three"}]'
select
[noRow] = row_number() over(order by [number] asc),
[table],
[data1] = sd.one,
[data2] = sd.two
from someDb sd
inner join @p1 on [noRow] = 1
inner join @p2 on [noRow] = 2
inner join @p2 on [noRow] = 3
-- etc.
期望的输出
| noRow | data1 | data2 | table |
|-------+-------+-------+-------|
| 1 | a | b | @p1 |
| 2 | c | d | @p2 |
| 3 | e | f | @p3 |
如何将这些变量连接到 SQL Server 中的特定行?
【问题讨论】:
-
数据库是什么版本的 SQL Server?这很重要,因为 SQL 2016 内置了 JSON 解析。最好的方法是将您的 JSON 解析为临时表,然后在您的临时表上进行连接。或者查看JSON解析,如果大小不太复杂,您可以直接进行。
-
2016.我希望将 json 按行存储在单个表格单元格中。
-
那么我建议首先解析每个 JSON,然后加入数据库中需要加入的字段。
-
样本数据加上预期结果将有助于澄清。
-
它仍然远未明确您想要的输出是什么......也不知道表格如何发挥作用。
标签: sql sql-server tsql variables join