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