我有一个返回单行的SQL查询,我有一个数字列表,我需要将这些数字作为单个行返回,并将单行数据绑定到它们的行。
例如,这是我正在尝试做的事情
select a,b,c, barcode
from database
join ('12345', '67890',...) as barcode
where a=1 and b=2 and c=3
我需要这样做,因为我正在修改一些代码,这些代码正在寻找来自查询的特定格式,并且修改代码以匹配我的文字列表比做某事要困难得多像这样
Example Output:
a b c barcode
- - - -------
1 2 3 12345
1 2 3 67890
1 2 3 ....
1 2 3 ....
...
答案 0 :(得分:2)
最简单的方法是创建一个包含单个列的条形码表,一次插入一个所需的值,然后加入该表。
也可以使用联盟来捏造它。连接问题('484','48583',...)是你要连接到一个包含多列的行,当你想要每行一行时。
伪编码:
select a,b,c, barcode
from database
join (select 12345 union all select 289384 union all...)a as barcode
where a=1 and b=2 and c=3
答案 1 :(得分:0)
基本上,您可以将列表作为单个CSV字符串传递,并将其转换为一组项目。在这种情况下经常使用表值函数,但实际上有很多选项需要探索。在Erland Sommarskog撰写的一组文章中可以找到各种方法及其测试的非常全面的集合:Arrays and Lists in SQL Server。
如果是一个函数,您的查询可能如下所示:
SELECT
t.a,
t.b,
t.c,
s.Value AS barcode
FROM yourtable t
CROSS JOIN dbo.Split('12345,67890', ',') s
WHERE t.a = 1
AND t.b = 2
AND t.c = 3