2016-07-25 55 views
1

我有一部分数字表它们的许多特性以及像这样的列:如何选择不同长度

[Part Number] [Type] [Manager] [Cat. Code] [etc...] 
    AAA-001  A  Dave  123 
    DDD-008  D  Chris  153 
    BBB-003  B  Dave  254 
    CCC-008  C  Dave  153 
    ... 

我试图让每个属性的所有唯一值的列表,以便它看起来更像是这样的:

[Type] [Manager] [Cat. Code] [etc...] 
    A  Dave  123 
    B  Chris  153 
    C     254 
    D 

但是每当我试图做到这一点使用SELECT DISTINCT *或类似的,它填补了所有的列,以便它们是相同的长度最长的一个,根据填充水平到原来的表格:

[Type] [Manager] [Cat. Code] [etc...] 
    A  Dave  123 
    B  Dave  254 
    C  Dave  153 
    D  Chris  153 

我该如何阻止这种情况发生,并且只保留每列的唯一值,即使它们可能有不同的长度?

回答

2

我想你已经误解了DISTINCT的功能。它会过滤您的结果,以便返回的所有都是唯一的,而不是每列。根据你在SELECT中命名的列,你会得到不同的结果。有关示例,请参见http://www.techonthenet.com/sql_server/distinct.php和“示例 - 使用多个表达式”一节

对于您的情况,如果您想要每列中的唯一值列表,则必须对每列执行单独的查询,例如:

SELECT DISTINCT [Type] FROM [Parts] 
SELECT DISTINCT [Manager] FROM [Parts] 
...etc 

如果然后希望他们并排侧(根据您的样品所需的输出),你只需要复制并粘贴到电子表格或东西。

+0

听起来很乏味。但我想如果这是它必须做的唯一方法。谢谢 – Kiplacon

+0

@Kiplacon对不起,但是,它是:-)你不能在一起做所有的列,因为通过在每个列中寻找唯一的值,你有效地消除了列之间的任何关系。每行上的项目可能来自原始表格中的任何位置,因此无法将它们与下一列唯一值的同一行上的项目关联起来。这就是为什么他们是单独的查询。 – ADyson