请回答这个问题...我试图制作单个表而不是多个表
表格结构如
ID COL1 COL2 COL3 ... ...
1 SHIRT NULL NULL
2 SKIRT NULL NULL
3 TROUSER NULL NULL
4 NULL WINTER NULL
5 NULL SUMMER NULL
6 NULL AUTUMN NULL
7 NULL NULL NIGHT
8 NULL NULL EVENING
9 NULL NULL NULL
. .. .. ..
答案 0 :(得分:0)
我们可以通过使用row_number,order by和Common table Expression
来实现这一点declare @table table(ID int,Col1 varchar(10),col2 Varchar(10),Col3 Varchar(10))
insert into @table(ID,Col1,col2,col3)values (1,'Shirt',NULL,NULL) ,
(2,'SKIRT',NULL,NULL),(3,'TROUSER',NULL,NULL),(4,NULL,'WINTER',NULL),(5,NULL,'SUMMER',NULL)
,(6,NULL,'AUTUMN ',NULL),(7,NULL,NULL,'NIGHT'),(8,NULL,NULL,'Evening')
;with CTE AS (
select col1,ROW_NUMBER()OVER( ORDER BY (SELECT NULL))R from @table
where Col1 is not NULL
), CTE1 AS (
select col2,ROW_NUMBER()OVER( ORDER BY (SELECT NULL))R from @table
where Col2 is not NULL
), CTE2 AS (
select col3,ROW_NUMBER()OVER( ORDER BY (SELECT NULL))R from @table
where Col3 is not NULL
)
select c.col1,cc.col2,ccc.Col3 from CTE C INNER JOIN cte1 CC
ON c.R = cc.R LEFT JOIN CTE2 CCC ON
CCC.R = C.R