SQL MS-Access为多列选择Distinct

时间:2014-11-08 13:53:46

标签: sql ms-access-2010

很抱歉再次询问这个话题,但我无法从现有答案中找到解决问题的方法。

我有一个表(“Data”),我需要从中提取三列(“PID”,“Manager”,“Customer”) 并且只有“PID”必须是不同的。我不关心为其他列提取哪些记录(“Manger”/“Customer”)它可能是第一个条目或其他任何内容。

SELECT Distinct PID, Manager, Customer
FROM Data;

会给我所有PID,经理和客户都不同的行,所以如果有两个具有相同PID但具有不同经理的委托,我会得到两个记录而不是一个。

非常感谢。

2 个答案:

答案 0 :(得分: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正在为经理Coz返回C & 5C大于A&同样5大于1 & 3

最小功能与MAX功能完全相反。是自我解释。

我也在demo上创建请点击查看Fiddle上的演示

Click Here To See The Demo

答案 1 :(得分:3)

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

此查询为每个“PID”返回“经理”和“客户”的唯一“PID”和最大值。

DISTINCT适用于选择列表中的所有列。因此,您需要使用GROUP BY +聚合函数(为多行返回一个值)。