嗨,我有下表
P_id Fname Lname 1 vaibhav shukla 2 davalesh barak 2 sumo barath 3 kushal mehra
现在我想要一个返回以下任何一个表的查询
P_id Fname Lname 1 vaibhav shukla 2 davalesh barak 3 kushal mehra
OR
P_id Fname Lname 1 vaibhav shukla 2 sumo barath 3 kushal mehra
快速解决方案赞赏
答案 0 :(得分:2)
好像你想在一列上获得独特。
希望您使用SQL Server 2005或更高版本
Select First_Name,Last_Name,P_Id
FROM
(
Select First_Name,Last_Name,P_Id
Row_Number() Over (Partition By P_Id Order By First_Name) As RNum
From Table1) T1
WHERE T1.RNum = 1
想法是在组PID中分配不同的行号,然后获得RowNumber = 1
的行号对于SQl Server 2000
Select Distinct First_Name,Last_Name,P_ID
From Table1 T1
INNER JOIN
(
Select Min(First_Name) First_Name,P_ID
From Table1 T1
Group By P_ID
) T2 ON T1.P_ID = T2.P_ID AND T1.First_Name = T2.First_Name
注意:如果两行具有相同的P_ID,First_Name和Different Last_Name,则返回2行。我正在检查。
另一种方法是使用Identity Column创建临时表。然后在内部查询中使用min(First_Name)而不是在P_ID中使用min(Idenity)组,在连接中我们将使用P_ID和标识进行连接。
答案 1 :(得分:0)
select t1.p_id
, min(t2.lname) lname
, min(t2.fname) fname
from tab t1
inner join tab t2
on t1.p_id = t2.p_id
where t2.Lname = (
select min(lname)
from tab t2
where t2.p_id = t1.p_id
)
group by t1.p_id