2011-10-11 42 views
1

任何技巧任何人都可以就如何見下表作爲額外行

ID TYPE Name Description 
1 X A DESC_A 
2 X B DESC_B 
3 Z C DESC_C 

操縱這個觀點,分享創建鮮明的列值?

NAME_X DESCRIPTION_X 
A  DESC_A 
B  DESC_B 
NAME_Z DESCRIPTION_Z 
C  DESC_C 

對於每一個不同的專欄中,我想創建一個自定義列在「類型」列中的每個不同的值。在此示例中,通過將TYPE值附加到「NAME_」和「DESCRIPTION_」來創建自定義行。

謝謝!從視圖中選擇時

alter view dbo.yourView 
as 
with c_Distinct([type]) 
as ( select distinct [Type] 
     from dbo.yourTable 
    ) 
select [Sort] = 0, 
     [Type], 
     Name, 
     [Description] 
from dbo.yourTable 
union all 
select [Sort] = 1, 
     [Type], 
     'NAME_'+[Type], 
     'DESCRIPTION_'+[Type] 
from c_Distinct 

然後進行排序:

回答

0

編輯:從視圖返回一些元數據

select * 
from yourView 
order by [Type] asc, [Sort] desc 
+0

這產生與上面的答案相同的結果,但不會對它們進行排序。謝謝! – MackPro

+0

從視圖中選擇時執行排序 –

1

試試這個:

create view vwTestDistinctData 
as 
    select [type], [Description] 
    from testdistinctdata 
    union all 
    select 
     'NAME_' + [type] as [Type], 
     'DESCRIPTION_' + [type] as [Description] 
    from testdistinctdata 
    group by [type] 
go 
+0

這將產生正確的結果集,但它不會正確地對自定義行進行排序/分組。還有什麼想法?謝謝! – MackPro

+0

@MackPro您可能知道在視圖中放置Order By子句是不可能的?爲什麼把Order By放在你選擇的地方是不可接受的? –

+0

我需要額外的列以某種方式對記錄進行排序,而通過簡單的順序則無效。我討厭精神障礙。感謝大家的意見! – MackPro