Строка SQL Server комбинация - PullRequest
0 голосов
/ 09 марта 2011

Я хочу вернуть таблицу строк, состоящую из всех возможных комбинаций строки в MS SQL 2008. Например, строка "01-02-03-04":

  1. 01 - 02- 03 - 04
  2. 02 - 03 - 04
  3. 01 - 03 - 04
  4. 01 - 02 - 04
  5. 01 - 02 - 03
  6. 01 - 02
  7. 01 - 03
  8. 01 - 04
  9. 02 - 03
  10. 02 - 04
  11. 03- 04

1 Ответ

2 голосов
/ 09 марта 2011
DECLARE @s varchar(150);
SET @s = '01-02-03-05-10';
WITH split AS (
  SELECT
    CAST(SUBSTRING(@s, number * 3 + 1, 2) AS varchar(150)) AS item,
    rn = number
  FROM master..spt_values
  WHERE type = 'P' AND number between 0 AND LEN(@s) / 3
),
combined AS (
  SELECT
    item,
    rn,
    itemcnt = 1
  FROM split
  UNION ALL
  SELECT
    item = CAST(c.item + '-' + n.item AS varchar(150)),
    n.rn,
    itemcnt = c.itemcnt + 1
  FROM split n
    INNER JOIN combined c ON n.rn > c.rn
)
SELECT *
FROM combined
WHERE itemcnt > 1
ORDER BY 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...