2014-12-03 96 views
1

我知道在stackoverflow上有很多樞軸示例,我可以理解它們,但是現在我有一個問題,我無法解決,因爲與其他問題不同,請我可以接受您標記此作爲問題重複或降低我的成績,但我需要一個asnwer,我需要轉動此表在SQL上使用數據透視表

Co_ordenAt        Co_EnfermedadPatologica     No_NombreEnfPatologica      Fl_Diagnostico 
--------------------------------------- --------------------------------------- ---------------------------------------------------------------------------- 
83412520141        1          Alergias         1    
83412520141        2          Asma          1    
83412520141        3          Bronquitis         0    
83412520141        4          Diabetes         0    
83412520141        5          HTA           1 
83412520142        1          Alergias         0    
83412520142        2          Asma          0    
83412520142        3          Bronquitis         0    
83412520142        4          Diabetes         1    
83412520142        5          HTA           0   

是這樣的表

Co_ordenAt        Alergia        Asma          Bronquitis     Diabetes     HTA 
--------------------------------------- --------------------------------------- ---------------------------------------------------------------------------------------------------------------------- 
83412520141        Peanuts        "observasion"        0       0       "observasion"   
83412520142        0          0           0       "observasion"    0               

我已經試過這個代碼

SELECT [Co_ordenAt], [Alergia], [Asma] ,[Bronquitis],[Diabetes],[ HTA] 
from 
(
     SELECT Co_ordenAt,(CASE WHEN No_Diagnostico='' THEN 'No' ELSE No_Diagnostico END) as Diagnositco, Co_EnfermedadPatologica, No_NombreEnfPatologica, Fl_Diagnostico, T_AntecedentePersonal.No_Diagnostico 
    FROM 
    [dbo].[T_AntecedentePersonal] INNER JOIN T_EnfermedadPatologica 
    ON T_AntecedentePersonal.Co_EnfermedadPatologica = T_EnfermedadPatologica.Co_EnfedadPatologica 
     WHERE Co_ordenAt in (83412520141,83412520142) 
    ) x 
pivot 
(
    max(Diagnositco) 
    FOR No_NombreEnfPatologica in([Alergia], [Asma] ,[Bronquitis],[Diabetes],[ HTA]) 
)p 

其中No_Diagnostico是從醫生的註釋如果Fl_diagnostico爲1(表示true),還是應該說「不」,如果No_Diagnostico爲NULL

但它返回一個重複Co_ordenAt與像第一個表,但與列我指定的,顯示除一個與Co_enfermedadPatologica(如表頭)

83412520141 1 PEANUT NULL NULL NULL NULL  
83412520141 2 NULL OBV  NULL NULL NULL  
83412520141 3 NULL NULL NO  NULL NULL  
83412520141 4 NULL NULL NULL NO  NULL  
83412520141 5 NULL NULL NULL NULL OBV 
83412520142 1 NO  NULL NULL NULL NULL  
83412520142 2 NULL NO  NULL NULL NULL  
83412520142 3 NULL NULL NO  NULL NULL  
83412520142 4 NULL NULL NULL OBV  NULL  
83412520142 5 NULL NULL NULL NULL NO 

我希望所有的唯一一家通過Co_OrdenAt行上所有的人都爲空,但我已經嘗試了很多代碼,甚至與XML和動態查詢

回答

2

在你的內心q你應該只選擇你真正需要的列。

只是評論如下的列在你的內部查詢:

  • Co_EnfermedadPatologica
  • Fl_Diagnostico
  • T_AntecedentePersonal.No_Diagnostico

希望這有助於。

+1

這是正確的,你可以在這個[fiddle](http://sqlfiddle.com/#!3/20cdd/10)看到一個OP的查詢修改版本 – paqogomez 2014-12-03 20:48:58

+0

更多的kludgy版本將由'Co_ordenAt '並在外部查詢中的所有enfermedades上選擇max。 – paqogomez 2014-12-03 20:50:22

+0

工作完美,謝謝你們很多人 – 2014-12-03 21:02:15