很抱歉再次询问这个话题,但我无法从现有答案中找到解决问题的方法。
我有一个表(“Data
”),我需要从中提取三列(“PID
”,“Manager
”,“Customer
”)
并且只有“PID
”必须是不同的。我不关心为其他列提取哪些记录(“Manger
”/“Customer
”)它可能是第一个条目或其他任何内容。
SELECT Distinct PID, Manager, Customer
FROM Data;
会给我所有PID,经理和客户都不同的行,所以如果有两个具有相同PID但具有不同经理的委托,我会得到两个记录而不是一个。
非常感谢。
答案 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
上述查询的输出为
说明: MAX :
MAX
正在为经理Coz返回C & 5
,C
大于A
&同样5
大于1 & 3
最小功能与MAX功能完全相反。是自我解释。
我也在demo上创建请点击查看Fiddle上的演示
答案 1 :(得分:3)
SELECT "PID", max("Manager"), max("Customer")
FROM "Data"
GROUP BY "PID";
此查询为每个“PID”返回“经理”和“客户”的唯一“PID”和最大值。
DISTINCT适用于选择列表中的所有列。因此,您需要使用GROUP BY +聚合函数(为多行返回一个值)。