我需要从 sql 中选择具有不同值的列
Posted
技术标签:
【中文标题】我需要从 sql 中选择具有不同值的列【英文标题】:I need to select a column with distinct value from sql 【发布时间】:2016-10-03 07:18:48 【问题描述】:我得到一个表格,其中包含一个包含各个部门的列和另一个包含多个dhdempno
的列。我需要选择一个唯一的dhdempno
代表部门负责人。一个特定部门有多个员工,其dhdmempno
和一个唯一的dhdempno
代表部门负责人。我应该执行什么查询才能获得结果?
例子
Department - dhdempno
abc 1
abc 1
abc 2
asd 5
asd 5
asd 6
查询应该返回
abc 2
asd 6
【问题讨论】:
你能解释一下这个结果背后的逻辑吗?你需要select a unique dhdempno which represents the department head
或The query should return abc - 2 , asd - 6
为什么asd - 6
为什么不asd - 2
?
您使用的是哪个 DBMS?
【参考方案1】:
这是一个查询,它会给出你正在寻找的结果。
select Department, dhdempno
from (
SELECT Department, dhdempno, count(dhdempno) as counts
FROM <your_table_name>
group by Department, dhdempno ) as sub
where counts = 1;
【讨论】:
【参考方案2】:试试这个
select departmentid, count(distinct dhdempno) as counting from your_table
group by departmentid
【讨论】:
【参考方案3】:使用类似查询
SELECT DEPARTMENT,DHDEMPNO FROM DEPARTMENT
GROUP BY DEPARTMENT,DHDEMPNO
HAVING COUNT(DHDEMPNO)=1
将在各个部门为您提供独特的 dhdempono 记录
【讨论】:
任何负面评论的 cmet 将不胜感激。因为它工作得很好。【参考方案4】:SELECT DepartmentId, MAX(dhdempno)
FROM [Table-name]
GROUP BY DepartmentId
【讨论】:
【参考方案5】:select [Department],[dhdempno] from [dbo].[Your_Table_Name] where [dhdempno] in (select [dhdempno] from [dbo].[Your_Table_Name] group by [dhdempno] having count(*) = 1)
【讨论】:
【参考方案6】:使用下面的查询:
select s.Department, max(s.dhdempno)as dhdempno from
(
SELECT DISTINCT DEPARTMENT, dhdempno FROM DUMMY
) s group by s.Department
【讨论】:
以上是关于我需要从 sql 中选择具有不同值的列的主要内容,如果未能解决你的问题,请参考以下文章