【发布时间】:2015-02-25 14:48:48
【问题描述】:
我需要选择具有唯一记录的唯一列。现在,在枢轴之后,当我使用简单查询 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
你有想法吗?
附:记录是动态的
更新:
我在旋转之前使用非常混乱的选择来为列提供不同的名称,也许你有建议如何以其他方式制作不同的名称?
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
【问题讨论】:
-
mysql 还是 sqlserver?我建议您先取消数据透视,然后再次进行数据透视...但是您可以在第一次数据透视之前选择唯一记录吗?
-
我不认为这是可以实现的。
-
表格看起来如何(定义和示例数据)。唯一的列?您正在使用哪个 dbms - MySQL 或 MS SQL Server - 或两者兼而有之?
-
感谢您的回答。我已经用我的选择更新了我的问题
-
它的 SQL 服务器。编辑了我的标签,误加了,抱歉。
标签: sql sql-server select unique