2015-02-25 6 views
1

Мне нужно выбрать уникальные столбцы с уникальными записями. В настоящее время, после поворота, когда я использую простой запрос SELECT * FROM table я получил результаты, как, что:SQL. Как выбрать уникальные записи из нескольких столбцов

| Test1 | Test2 | Test3 | Test1 | Test2 | Test3 | Test1 | Test2 | Test3 | -- column names 
| 1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | -- records 

Если я использую запрос: SELECT DISTINCT * FROM table я получил следующие результаты:

| Test1 | Test2 | Test3 | -- different column names 
| 1 | 1 | 1 | -- unique records 

It должно быть таким:

| Test1 | Test2 | Test3 | -- different column names 
| 1 | 2 | 3 | -- different records 

У вас есть идеи?

P.s. Записи динамичны


UPDATE:

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

SELECT DISTINCT TOP 5 @colsConversion += 'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'1')+ ',' + 
              'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'2')+ ',' + 
              'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'3')+ ',' + 
              'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'4')+ ',' + 
              'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'5')+ ', ' 
       FROM (SELECT DISTINCT TOP 5.... 

мне нужно использовать только один раз 'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'1')+ ',', но проблема в том, что я не знаю, как сделать различные имена для каждого столбца, в этом случае все столбцы будут имена Test1

+2

mysql или sqlserver? Я бы посоветовал вам не открывать, а затем снова поворачиваться ... но вы можете выбрать уникальные записи перед своим первым стержнем? – fthiella

+0

Я не думаю, что это достижимо. –

+1

Как выглядит таблица (определение и примеры данных). Уникальные столбцы? Какие dbms вы используете - MySQL или MS SQL Server - или оба? – jarlh

ответ

0

Может быть, это?

select distinct id, name from [table] 

или

select id, name from [table] group by id, name 

Здесь отличный оператор для удаления дубликатов строки результата.

Distinct - довольно дорогостоящая операция, так как после обработки запроса сервер БД может выполнить операцию сортировки, чтобы удалить дубликаты.

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