我需要选择具有唯一记录的唯一列。就目前而言,在使用简单查询SELECT * FROM table
之后,我得到了类似的结果:
| 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
应该是这样的:
| Test1 | Test2 | Test3 | -- different column names
| 1 | 2 | 3 | -- different records
你有想法吗?
P.S。记录是动态的
更新
我在使用实际上如此混乱的选择之前转动为列提供不同的名称,也许您有建议如何以其他方式创建不同的名称?
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
< / p>
答案 0 :(得分:0)
也许这个?
select distinct id, name from [table]
或
select id, name from [table] group by id, name
这里不同的运算符用于删除重复的结果行。
Distinct是一项相当昂贵的操作,因为在处理完查询后,DB服务器可能会执行排序操作以删除重复项。