2014-12-03 141 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