2014-11-08 99 views
2

對於再次詢問此主題感到抱歉,但我還沒有能夠從現有答案推導出解決方案。SQL MS-Access爲多個列選擇Distinct

我有一個表(「Data‘),從該我需要拉三列(’PID」,‘Manager’,‘Customer’) 和只有‘PID’必須是不同的。我不在乎哪些記錄被拉到其他列(「Manger」/「Customer」)它可能是第一個條目或任何其他。

SELECT Distinct PID, Manager, Customer 
FROM Data; 

能不能給我所有的其中PID,經理和客戶是不同的,所以如果兩個entrys具有相同PID但有不同的經理,我會得到兩個結果,而不是一個行。

非常感謝。

+0

這些列數據管理器,客戶呢?你想要這個coulmns的任何數據 – 2014-11-08 13:56:48

回答

3

你可以做到這一點 希望你能有所幫助

SELECT PID, max(Manager), max(Customer) 
FROM Data 
group by PID 

或者

SELECT PID, min(Manager), min(Customer) 
FROM Data 
group by PID 

編輯

我會給你一個例子來解釋你的Max & Min Func

下面是樣品表

CREATE TABLE data(
    PID int , 
    Manager varchar(20) , 
    Customer varchar(20) 
) ; 


insert into data 
values 
(1,'a','b'), 
(1,'c','d'), 
(3,'1','e'), 
(3,'5','e'), 
(3,'3','e') 

現在,

這是三個查詢將返回各自的輸出,,

select * from data; 


SELECT PID, max(Manager), max(Customer) 
FROM Data 
group by PID; 


    SELECT PID, min(Manager), min(Customer) 
FROM Data 
group by PID 

輸出用於上述的查詢是

enter image description here

說明: MAX

MAX爲經理堂妹返回C & 5C是大於A &同樣5是大於1 & 3

敏機能的研究是完全相反MAX功能&的是自explenatory 。

我也上演示創建請點擊查看關於小提琴演示

Click Here To See The Demo

+0

@BobBetter對不起,沒有驗證的答案。 – 2014-11-08 14:04:32

+0

謝謝@Hardik Parmar,它的工作原理!我想知道,max()函數如何在字符串上工作? (Manager是一個字符串) – BobBetter 2014-11-08 17:09:13

+0

@BobBetter Max函數返回最大值。請檢查我對答案所做的修改。 – 2014-11-09 08:56:08

3
SELECT "PID", max("Manager"), max("Customer") 
FROM "Data" 
GROUP BY "PID"; 

該查詢返回獨特的「PID」 S和「經理」和「客戶」爲最大值每個「PID」。

DISTINCT應用於選擇列表中的所有列。所以你需要使用GROUP BY +一個聚合函數(爲幾行返回一個值)。

+0

謝謝@Multisync,它在我刪除了「」之後起作用。並感謝您的解釋。 祝您有美好的一天 – BobBetter 2014-11-08 17:10:08