2016-12-05 126 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有多少次你想每行是显示