Как выбрать столбцы из таблицы в случайном порядке в TSQL - PullRequest
2 голосов
/ 22 мая 2009

У меня есть таблица с 5 столбцами, какой самый простой способ выбрать все строки, но где каждый столбец индивидуально рандомизирован?

Все, что я могу придумать, это выбрать каждый столбец отдельно, вместе с

row_number over ( order by newid()) as lookup

, а затем соедините каждый столбец вместе при поиске.

Есть ли более простой способ?

Спасибо

Ответы [ 2 ]

4 голосов
/ 22 мая 2009

Нет, это в значительной степени так. Я предполагаю, что вы хотите случайный порядок строк на столбец (не все столбцы из одной случайной строки).

SQL основан на строках, поэтому для 5 столбцов необходимо разделить выбор каждого столбца (для случайной строки в столбце), а затем использовать произвольную строку для объединения результатов.

Интересная проблема ...

3 голосов
/ 22 мая 2009

Вы можете подготовить 5 заказанные наборы и PIVOT их:

SELECT  *
FROM    (
        SELECT  'col1' AS name, col1 AS col, ROW_NUMBER() OVER (ORDER BY NEWID()) AS rn
        FROM    table
        UNION ALL
        SELECT  'col2', col2, ROW_NUMBER() OVER (ORDER BY NEWID())
        FROM    table
        UNION ALL
        SELECT  'col3', col3, ROW_NUMBER() OVER (ORDER BY NEWID())
        FROM    table
        UNION ALL
        SELECT  'col4', col4, ROW_NUMBER() OVER (ORDER BY NEWID())
        FROM    table
        UNION ALL
        SELECT  'col5', col5, ROW_NUMBER() OVER (ORDER BY NEWID())
        FROM    table
        ) q
PIVOT   (
        MIN(col)
        FOR name IN ([col1], [col2], [col3], [col4], [col5])
        ) pt

См. Эту запись в моем блоге для более подробной информации:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...