2016-07-25 44 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