2016-12-05 94 views
0

我有一個SELECT查詢的幾個結果行。SQL Server:乘以一個結果行

SELECT a.code, CONCAT('text output', a.result) 
FROM table1 a 

結果看起來像

code | text 
a | 'text output a' 
b | 'text output b' 

一列包含串聯的文本輸出。我只是想讓每個結果行都有不同的文本輸出(可以進行硬編碼)複製。

預期的結果應該是像

code | text 
a | 'example 1: text output a' 
a | 'example 2: text output a' 
b | 'example 1: text output b' 
b | 'example 2: text output b' 

從本質上說,我想要的 - 每一個結果 - 讓例如1例如2在前面。這如何有效地完成?

回答

1

也許在你的情況下,最簡單的方法如下:

SELECT a.code, CONCAT('example 1: text output', a.result) 
FROM table1 a 
union all 
SELECT a.code, CONCAT('example 2: text output', a.result) 
FROM table1 a 
0

這可以用遞歸查詢

DECLARE @table TABLE(
    code CHAR(1) 
    , txt VARCHAR(20) 
) 

INSERT INTO @table VALUES 
('a', 'text output a') 
,('b', 'text output b') 
,('c', 'text output c') 

;WITH q1 AS(
    SELECT 1 ex, tbl1.code, tbl1.txt 
    FROM @table tbl1 
     UNION ALL 
      SELECT ex+1, q1.code, q1.txt 
      FROM q1 
      WHERE q1.ex < 3 
) 
SELECT q1.code, concat('Example ', q1.ex, ': ', q1.txt) [text] 
FROM q1 
ORDER BY q1.code, q1.ex 

可以做,你可以根據換號3有多少次你想每行是顯示