【发布时间】:2016-09-19 13:22:30
【问题描述】:
我有一张关键字表,我想在保持顺序的同时将其组合成 2 个单词组合(即,我不希望每个 2 个单词组合,只是在它们彼此之前或之后)。
我可以使用WHILE 循环来完成这项工作,但是查询很庞大并且不是最佳的,因为我需要在更大的查询中使用它。我的查询如下:
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
DROP TABLE #Temp
CREATE TABLE #Temp
(
RowNum INT
,Keyword VARCHAR(50)
)
INSERT #Temp
VALUES
(1, 'Apple'),
(2, 'Flavored'),
(3, 'Ice'),
(4, 'Tea')
IF OBJECT_ID('tempdb..#Final') IS NOT NULL
DROP TABLE #Final
CREATE TABLE #Final
(
Combined VARCHAR(101)
)
DECLARE @i INT
DECLARE @kw1 VARCHAR(50)
DECLARE @kw2 VARCHAR(50)
SET @i = 2
WHILE EXISTS (SELECT * FROM #Temp WHERE RowNum = @i)
BEGIN
SET @kw1 = (SELECT Keyword FROM #Temp WHERE RowNum = @i - 1)
SET @kw2 = (SELECT Keyword FROM #Temp WHERE RowNum = @i)
INSERT #Final
SELECT @kw1 + ' ' + @kw2
SET @i = @i + 1
END
SELECT * FROM #Final
有谁知道我可以用更聪明/更有效的方法来完成这项工作?
【问题讨论】:
-
您使用哪种 DBMS?
-
SQL Server 管理工作室 2014
标签: sql sql-server sql-server-2014