2013-04-24 34 views
-3

所以,讓我們說,我有表ProductAccess查詢到合併域形式相關表

ProdID | ProdDesc 
----------------- 
    1 | Widget 
    2 | Snikt Spring 
    3 | Water Bearing 

和表ProdFeature

ProdID | DocID | ProdSafe | ProdShiny 
------------------------------------- 
    1 | 34 | Y  | Null 
    1 | 17 | Null  | Y 
    2 | 54 | Y  | Null 
    3 |  2 | Null  | Y 

我怎麼會得到這樣一個結果:

ProdID | ProdSafe | SafetyDocID | ProdShiny | ShinyDocID 
-------------------------------------------------------- 
    1 | Y  |   34 | Y   |   17 

任何幫助表示讚賞。 〜R

回答

0

這樣的事情?

SELECT p.ProdID, 
     pf1.ProdSafe, 
     pf1.DocID SafetyDocID, 
     pf2.ProdShiny, 
     pf2.DocID ShinyDocID 
    FROM Product p 
      left outer join ProdFeature pf1 
       on p.ProdID = pf1.ProdID and pf1.ProdSafe is not null 
      left outer join ProdFeature pf2 
       on p.ProdID = pf2.ProdID and pf2.ProdShiny is not null 

Here is a Demo.

另一個版本,這是少高性能

SELECT p.ProdID, 
     (select ProdSafe 
      from ProdFeature 
     where ProdID = p.ProdID 
       and ProdSafe is not null) ProdSafe, 
     (select DocID 
      from ProdFeature 
     where ProdID = p.ProdID 
       and ProdSafe is not null) SafetyDocID, 
     (select ProdShiny 
      from ProdFeature 
     where ProdID = p.ProdID 
       and ProdShiny is not null) ProdShiny, 
     (select DocID 
      from ProdFeature 
     where ProdID = p.ProdID 
       and ProdShiny is not null) ShinyDocID 
    FROM Product p 

Here is a Demo.