2

我有一个返回单行的 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     ....
...
4

2 回答 2

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
于 2012-05-22T21:17:50.980 回答
0

基本上,您可以将列表作为单个 CSV 字符串传递,并将其转换为一组项目。在这种情况下经常使用表值函数,但实际上有很多选项可供探索。可以在 Erland Sommarskog 的文章集中找到各种方法及其测试的非常全面的集合: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
于 2012-05-22T21:24:36.080 回答