1

SELECT标识,EMPNO FROM EmployeesTable“鲜明” 列

EMPNO可以为1项或多个记录在上面的查询的结果是相同的。我现在想添加另一个从EmpNo派生的列(让我们称之为EmpNo2),但只返回不同的EmpNo值。

例如,如果上面的查询返回100条记录,但有69个不同的EMPNO值和我修改查询到

SELECT id, EmpNo, Distinct EmpNo2 
FROM EmployeesTable EmpNo 

, 我想返回所有的100行,但最后一列EmpNo2应返回EmpNo字段的69个不同值。

但是,正如已经知道的那样,以这种方式使用不同的结果会导致错误,但是我想实现这样的功能 - 而子查询并没有帮助。

样品所需结果

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

我想使用EmpNo2值作为SSRS报告中的下拉列表参数列表。我想这样做,因为SSRS 2005中不存在多个数据集支持。 – StackTrace 2010-07-21 08:48:25

+0

然后,您可能希望添加SSRS标记。 – Tobiasopdenbrouw 2010-07-21 08:56:43

+1

到底什么?给我们关于你的模式(表格)和一些样本数据以及一些样本结果的更多信息...... – 2010-07-21 08:58:42

回答

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 

你是说一个子查询将无法正常工作,虽然 - 为什么不呢?

+0

这可能工作。但是,empno2仍然返回与empno相同的行数,现在解决方案正在寻找使empno2仅返回不同值的empno。任何帮助。 – StackTrace 2010-07-21 09:17:21

+0

你想要什么,是上述查询(加上NULLS)。您不能让empno2返回更少的行:所有列在查询中具有相同的行数。编辑:我不知道SSRS,但你不能只使用我的答案中的子查询作为你的下拉菜单的来源吗? – Tobiasopdenbrouw 2010-07-21 09:28:33

+0

问题在于,参数下拉列表必须从主查询(报表查询)返回的列中选择,因为SSRS 2005不支持单个报表中的多个数据集。 指定下拉列表的来源时,我只能指定报表查询返回的列中的列。 __________Am目前能够做到这一点,但现在下拉菜单具有相同值的重复选项。 – StackTrace 2010-07-21 09:36:27

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