当使用Union和string_split()时,子查询返回了多个值

3

我有一个查询,将使用UNION向表中插入数据。

DECLARE @testTable TABLE
(
  ID smallint,
  ACode varchar(64)
)

INSERT INTO @testTable
SELECT 1, 'A1,B2'
UNION ALL
SELECT 2, 'C1,D2'


SELECT [value] As ACode
FROM STRING_SPLIT
(
  (
    SELECT t.ACode
    FROM @testTable t
  ),
  ','
)

当我只需要返回单行时,我不会遇到任何问题。 我期望当有两个或更多的UNION时,它只会附加在末尾,但它给了我一个错误。"子查询返回了多个值。当子查询跟随=,!=,<,<=,>,>=时,不允许这样做,或者当子查询用作表达式时"

有人能帮我修复我的查询吗?

我期望的是像这样:
enter image description here

演示SQL

1个回答

2

请使用 CROSS APPLY 替代

示例

Select ACode=B.value
 From  @testTable A
 Cross Apply string_split(ACode,',') B

结果

ACode
A1
B2
C1
D2

谢谢。我可以问一下,Cross Apply 和 Inner Join 差不多吗? - Amelia
@Amelia 我喜欢把CROSS APPLY看作是一个记录级子例程。 - John Cappelletti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接