Sql 将列值隐藏在第一个
假设我有一个表,即company,有Emp\u name、salary和department\u name列Sql 将列值隐藏在第一个,sql,sql-server,tsql,Sql,Sql Server,Tsql,假设我有一个表,即company,有Emp\u name、salary和department\u name列 Emp_name salary Dept_name AAAA 40000 production HHHH 50000 Developer DDDD 40000 production EEEE 45000 sales BBBB
Emp_name salary Dept_name
AAAA 40000 production
HHHH 50000 Developer
DDDD 40000 production
EEEE 45000 sales
BBBB 42000 production
FFFF 46000 sales
CCCC 41000 production
GGGG 49000 Developer
我希望表中的所有数据按部门列出,我希望如下所示:
Emp_name salary Dept_name
AAAA 40000 production
BBBB 42000
CCCC 41000
DDDD 40000
EEEE 45000 sales
FFFF 46000
GGGG 49000 Developer
HHHH 50000
我建议只对行进行排序:
select emp_name, salary, dept_name
from t
order by min(emp_name) over (partition by dept_name),
dept_name,
emp_name;
但是,您似乎希望每个分组的第一行都有员工姓名。这种类型的转换通常在应用程序层处理。但您可以在SQL中执行此操作:
select emp_name, salary,
(case when row_number() over (partition by dept_name order by emp_name) = 1
then dept_name
end) as dept_name
from t
order by min(emp_name) over (partition by dept_name),
dept_name,
emp_name;
请解释订购。根据问题指南,请说明您尝试了什么,并告诉我们您(在本网站或其他地方)发现了什么,以及为什么它不能满足您的需求。这是一个显示问题,您通常在前端会这样做。添加一个id(int-identity(1,1))列可能是一个好主意,万一你在同一个部门有两个同名的员工。。。