2013-03-08 101 views
1

我是sql server 2012的新手,想了解如何使用t-sql创建以下输出。有很多俱乐部号码,所以必须有一个循环或光标。请帮忙!!t-sql查询填充空值

club_number name            number 
---------- -------------------------------------------------- ----------- 
355292  NULL            NULL 
NULL  Giviton Mbunge          355308 
NULL  Etero Aaron          355317 
NULL  Evason Banda          355326 
NULL  Kachibobo Batoni         355335 
NULL  Kashamba Nkhani         355344 
355353  NULL            NULL 
NULL  Daniel Banda          355362 
NULL  James Aaron          355371 
NULL  Amson Kamanga          355380 
NULL  Gostino George          355399 
355405  NULL            NULL 
NULL  Yohane Zimba          355414 
NULL  Haward M.Chilembwe         355423 
NULL  Zikiele Blangete         355432 
355441  NULL            NULL 

结果:我想看到如下上面的表格,该查询能做到吗?请帮助

club_number name            number 
---------- -------------------------------------------------- ----------- 
355292  NULL            NULL 
355292  Giviton Mbunge          355308 
355292  Etero Aaron          355317 
355292  Evason Banda          355326 
355292  Kachibobo Batoni         355335 
355292  Kashamba Nkhani         355344 
355353  NULL            NULL 
355353  Daniel Banda          355362 
355353  James Aaron          355371 
355353  Amson Kamanga          355380 
355353  Gostino George          355399 
355405  NULL            NULL 
355405  Yohane Zimba          355414 
355405  Haward M.Chilembwe         355423 
355405  Zikiele Blangete         355432 
355441  NULL            NULL 
+2

您所描述的映射依赖于该行所产生的顺序;但是你没有描述如何获得这种排序。 – 2013-03-08 15:24:09

+0

@Pieter如果你是COALESCE(number,club_number)'(或相反)它是按顺序的。 – 2013-03-08 15:59:43

+0

@Aaron:是的;但OP应该学会提供完整的问题描述。 OP正在让我们“猜测”这个关键事实。 – 2013-03-08 16:06:55

回答

5
SELECT club_number = MAX(club_number) OVER 
    (
     ORDER BY COALESCE(club_number, number) 
     ROWS UNBOUNDED PRECEDING 
    ), 
    name, number 
FROM dbo.your_table 
ORDER BY club_number; 
+0

真棒!!!!!!!谢谢Aaron。 – user2148689 2013-03-08 16:13:44

+1

@ user2148689没问题。 PS没有循环,没有光标。不要跳到“必须有循环或光标”的结论。 – 2013-03-08 18:34:13

+0

很酷。再次感谢@ user2148689。 – user2148689 2013-03-15 08:06:03