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