2016-12-05 3 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 по сколько раз вы хотите, чтобы каждая строка будет

Смежные вопросы