SELECT id,EmpNo 来自EmployeesTable
对于上述查询结果中的1个或多个记录,EmpNo可以相同。我现在想要添加另一个派生自EmpNo的列(让我们称之为EmpNo2),但只返回EmpNo的不同值。
例如,如果上面的查询返回100条记录,但有69个不同的EmpNo值,我将查询修改为
SELECT id, EmpNo, Distinct EmpNo2
FROM EmployeesTable EmpNo
, 我希望返回所有100行,但最后一列EmpNo2应返回69个不同的EmpNo字段值。
但是正如已经知道的那样,以这种方式使用distinct会导致错误,但我想实现这样的功能 - 并且子查询没有帮助。
样本需要的结果
ID EmpNo EmpNo2
1 0T4/HR 0T4/HR
1 0T4/HR 2VP/E
1 0T4/HR xT9/67
1 0T4/HR
1 0T4/HR
2 2VP/E
2 2VP/E
2 2VP/E
2 2VP/E
2 2VP/E
3 XT9/67
3 XT9/67
3 xT9/67
3 XT9/67
答案 0 :(得分:1)
怎么样:
Select id, empno, empno2
from employeestable left outer join (
SELECT min([id]) as minid
,[empno] empno2
FROM [EmployeesTable]
group by empno) etab2 on employeestable.id = etab2.minid
你说子查询不起作用,但为什么不呢?
答案 1 :(得分:0)
您的要求不明确,我的信息也很少。以下是您的需求。这可能会更好,但这只是一次尝试。
declare @temp table
(
uniqueid int identity(1, 1),
id int,
empno varchar(50),
empno2 varchar(50)
)
insert into @temp select 1, '0T4/HR', null
insert into @temp select 1, '0T4/HR' , null
insert into @temp select 1 , '0T4/HR' , null
insert into @temp select 1, '0T4/HR' , null
insert into @temp select 1, '0T4/HR' , null
insert into @temp select 2, '2VP/E' , null
insert into @temp select 2, '2VP/E' , null
insert into @temp select 2, '2VP/E' , null
insert into @temp select 2, '2VP/E' , null
insert into @temp select 2, '2VP/E' , null
insert into @temp select 3, 'XT9/67' , null
insert into @temp select 3, 'XT9/67' , null
insert into @temp select 3, 'xT9/67' , null
insert into @temp select 3, 'XT9/67' , null
SELECT ROW_NUMBER() OVER (ORDER BY id) AS id, empno into #temp FROM @temp group by empno, id
update @temp set empno2 = t2.empno
from @temp t inner join #temp t2 on t.uniqueid = t2.id
select * from @temp
drop table #temp