我面臨的問題是,在處理未完全標準化的表格時偶爾會出現問題。這是問題。想象一下有4列的表格,我們稱這個表爲dbo.Hierarchical。下面是表的定義:展平包含引用SQL Server 2005中其他行的行的表格
if OBJECT_ID('dbo.Hierarchical') is not null
drop table dbo.Hierarchical
create table dbo.Hierarchical
(
colID int not null identity(1,1) primary key
,GroupName varchar(5) not null
,IsAtomic bit not null
,Constituent varchar(5) null
)
此表可以具有組名是原子的,這意味着它不沒有部件,或者不能夠原子。在這種情況下,GroupName可以包含其他GroupNames。
爲了清楚起見,讓我們填寫一些數據。
set nocount on
insert into dbo.Hierarchical values ('A',0,'B')
insert into dbo.Hierarchical values ('A',0,'C')
insert into dbo.Hierarchical values ('B',1,'B')
insert into dbo.Hierarchical values ('C',0,'K')
insert into dbo.Hierarchical values ('C',0,'L')
insert into dbo.Hierarchical values ('D',0,'E')
insert into dbo.Hierarchical values ('D',0,'F')
insert into dbo.Hierarchical values ('D',0,'G')
insert into dbo.Hierarchical values ('E',1,'E')
insert into dbo.Hierarchical values ('F',1,'F')
insert into dbo.Hierarchical values ('G',0,'H')
insert into dbo.Hierarchical values ('G',0,'I')
insert into dbo.Hierarchical values ('H',1,'H')
insert into dbo.Hierarchical values ('I',1,'I')
insert into dbo.Hierarchical values ('J',1,'J')
insert into dbo.Hierarchical values ('K',1,'K')
insert into dbo.Hierarchical values ('L',1,'L')
insert into dbo.Hierarchical values ('M',1,'M')
insert into dbo.Hierarchical values ('N',1,'N')
set nocount off
現在,如果我們來看一個簡單的SELECT * FROM dbo.Hierarchical我們得到如下:
GroupName colID IsAtomic Constituent
A 1 0 B
A 2 0 C
B 3 1 B
C 4 0 K
C 5 0 L
D 6 0 E
D 7 0 F
D 8 0 G
E 9 1 E
F 10 1 F
G 11 0 H
G 12 0 I
H 13 1 H
I 14 1 I
J 15 1 J
K 16 1 K
L 17 1 L
M 18 1 M
N 19 1 N
吆,這是長篇大論。現在請注意,前兩行有GroupName A和Constiuents B和C.B是Atomic,所以它沒有更多的便利。但是,C具有便祕K,L(K和L是原子)。我怎樣才能創建一個視圖,將這張表壓平,這樣我只能看到GroupName和Atomic constiuents。在組名A的情況下,我看到768,16 3行
A B
A K
A L
+1對於一個完整的問題和提供DDL和樣本數據。好工作。 – codingbadger 2010-05-26 15:43:51
組成成分是否可以包含自己的成分,或者最多隻有兩個等級? – AakashM 2010-05-26 15:44:19
我不明白輸出,因爲'K'&'L'不會出現在GroupName爲'A'的行中。你是否想要列出每個組名的原子訃告,關於它們是否出現在具有該組名的數據中? – RedFilter 2010-05-26 15:47:01