我不确定标题是否正确描述了我的问题,但问题就在这里。
我有一个表值函数,采用逗号分隔值。
我有两个字符串,它们的逗号分隔条目数相同。
以下查询返回给我笛卡尔积
select * from dbo.SplitString('test,test1',',') as a,dbo.SplitString('45,78',',') as b
+-------+-------+
| items | items |
+-------+-------+
| test | 45 |
| test | 78 |
| test1 | 45 |
| test1 | 78 |
+-------+-------+
我需要一行中具有相应值的输出,没有重复
+-------+-------+
| items | items |
+-------+-------+
| test | 45 |
| test1 | 78 |
+-------+-------+
关于如何使用 select 语句以及仅函数获取上述输出的任何想法
2 回答
除非
SplitString
返回可以从中派生订单的东西(例如,它可能返回作为项目索引的列),否则这是不可能的。SQL Server 是 set-based,并且集没有顺序。仅通过对特定列的排序来明确指定顺序。
将
Index int not null
列添加到SplitString
并将索引上的结果连接在一起。为此,请使用 Jayvee 的答案中的查询(但按Index
排序,而不是colx
排序)。我将复制查询:假设有关您的数据和功能的几件事应该可以正常工作: