2014-11-08 97 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