在SQL上使用Pivot

在SQL上使用Pivot,sql,sql-server,pivot,pivot-table,Sql,Sql Server,Pivot,Pivot Table,我知道stackoverflow上有很多pivots示例,我可以理解它们,但现在我有一个问题无法解决,因为它与其他问题不同,请允许我接受您将此问题标记为重复或降低我的分数,但我需要一个asnwer,我需要透视此表 Co_ordenAt Co_EnfermedadPatologica No_NombreEnfPatologica Fl_Diagnostico ---

我知道stackoverflow上有很多pivots示例,我可以理解它们,但现在我有一个问题无法解决,因为它与其他问题不同,请允许我接受您将此问题标记为重复或降低我的分数,但我需要一个asnwer,我需要透视此表

 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                                                           
像这张桌子

 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
其中,如果Fl\U Diagnostico为1(表示为真),则No\U Diagnostico是医生的注释;如果No\U Diagnostico为空,则应表示“否”

但它返回一个重复的Co_ordenAt,与第一个表类似,但与我指定的列相同,除了带有Co_enfermedappatologica(与第一个表类似)的列之外,所有列都显示为null


我只想按Co_OrdenAt将所有内容放在一行中,但我已经尝试了很多代码,即使是使用XML和动态查询,在内部查询中也应该只选择真正需要的列

只需在内部查询中注释以下列:

  • Co_enfermedapatologica
  • Fl_诊断学
  • T_AntecedentePersonal.No_Diagnostico

希望这能有所帮助。

这是正确的,您可以在这里看到OP查询的修改版本。更麻烦的版本是按
Co\u ordenAt
分组,并在外部查询的所有enfermedades上选择max。