将数据与具有多个输出值的SQL Server函数组合在一起

时间:2018-05-22 06:13:49

标签: sql sql-server

我有以下情况:

表data_table:

ID  data
1   a;b;c
2   d;e;f
3   j


function datasplit:
dbo.[datasplit]('a;b;c', ';')

将导致结果表:

items 
a
b
c

我想生成一个包含拆分数据的输出

ID  splitted_data
1   a
1   b
1   c
2   d
2   e
2   f
3   j

我试图使用的SQL查询:

select ID, (select * from dbo.[datasplit](data, ';')) as splitted_data 
FROM
data_table

我得到了错误信息:

  

Msg 512,Level 16,State 1,Line 11   子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

是否有使用常规查询生成所需结果的方法,或者是否需要SP或其他函数?

3 个答案:

答案 0 :(得分:0)

@david,尝试使用以下解决方案,让我知道这对您有用吗?

[(2, 2), (3, 2), (5, 2)]

答案 1 :(得分:0)

使用apply调用返回一组值的函数:

select t.ID, ds.col
from data_table t cross apply
     dbo.datasplit(data, ';') as ds(col);

答案 2 :(得分:0)

您无法以TVF运营商的方式执行APPLY

select t.ID, t1.out_put_col_via_function as splitted_data 
from data_table t 
cross apply dbo.datasplit(t.data, ';') t1;