【发布时间】:2026-02-01 10:25:01
【问题描述】:
如何重新加入从CROSS APPLY 返回为value 的值?
以下代码将存储为 CSV 的值存储在单个列中,并将其拆分为使用 STRING_SPLIT() 的表返回。我只是想重新加入这些值,因为它们处于“表格形式”中。目前,我只能通过在查询下方使用另一个 CTE 来拆分这些逗号分隔值来做到这一点。我很确定可以只加入表数据而无需另一个 CTE。
下面的代码使用 CTE 生成假数据。非常可重复
WITH fake_data AS
(
SELECT 1 as pkey, 'Billy' as name, 'FE,BF,AF,JF,AA' AS multi_select
)
, lookupTable AS
(
SELECT 'Forever' AS lookupValue, 'FE' AS lookupItem UNION ALL
SELECT 'BoyFriend' AS lookupValue, 'BF' AS lookupItem UNION ALL
SELECT 'AsFriend' AS lookupValue, 'AF' AS lookupItem
)
, csvToTable AS
(
SELECT value AS lookupItem
FROM fake_data fd
CROSS APPLY STRING_SPLIT(fd.multi_select, ',')
/* How do I make the below Left Join Work? */
--LEFT JOIN lookupTable lt ON lt.lookupItem = fd.value
)
SELECT *
FROM csvToTable csv
-- LEFT JOIN lookupTable lt ON csv.lookupItem = lt.lookupItem
【问题讨论】:
标签: csv split cross-apply ssms-2017