Étant donné que le projet doit utiliser le contenu répertorié comme nom de champ
Synthétiser une donnée avec différents noms de la même entreprise (une donnée pour chaque état) et utiliser l'heure correspondante de l'état comme nom de champ
select B.seId,B.company, B.short,
max(if(A.stat=101, A.statDate,NULL )) as qStatDate,
max(if (A.stat=102,A.statDate,NULL )) as wStatDate,
max(if(A.stat=103, A.statDate,NULL )) as zStatDate,
max(if(A.stat=201, A.statDate,NULL )) as yStatDate,
max(if(A.stat=201, A.ref,NULL )) as yRef,
max(if(A.stat=202, A.statDate,NULL )) as yStatDate,
max(if(A.stat=202, A.ref,NULL )) as yRef,
max(if(A.stat=203, A.statDate,NULL )) as yStatDate,
max(if(A.stat=204, A.statDate,NULL )) as yStatDate,
max(if(A.stat=204, A.ref,NULL )) as yRef,
max(if(A.stat=205, A.statDate,NULL )) as gStatDate,
max(if(A.stat=205, A.ref, NULL )) as gRef,
max(if(A.stat=206, A.statDate,NULL )) as zStatDate,
max(if(A.stat in (207,208), A.statDate,NULL )) as zhStatDate,
max(if(A.stat=209, A.statDate,NULL )) as fStatDate,
max(if(A.stat=210, A.statDate,NULL )) as fsStatDate,
max(if(A.stat=211, A.statDate,NULL )) as zhbStatDate,
max(if(A.stat=212, A.statDate,NULL )) as ssStatDate,
max(if(A.stat=212, A.ref,NULL )) as ssRef,
max(if(A.stat=213, A.statDate,NULL )) as sswStatDate,
max(if(A.stat=213, A.ref,NULL )) as sswRef,
max(if(A.stat=214, A.statDate,NULL )) as zhsStatDate,
max(if(A.stat=214, A.ref,NULL )) as zhsRef,
max(if(A.stat=215, A.statDate,NULL )) as fsStatDate,
max(if(A.stat=216, A.statDate,NULL )) as fswStatDate
from (SELECT seId, stat, statDate, ref FROM dws_detail where dataStatus<>3) as A LEFT JOIN (SELECT seId,company, short FROM dws_base where dataStatus<>3) AS B ON A.seId=B.seId GROUP BY A.seId
il y a un endroit pour faire attention
Il peut être utilisé en vérifiant les données
"""case ZZZ when XXX then YYY else AAA end""" Utilisez case when pour obtenir la valeur si A.stat correspond à A.statDate est une correspondance un à un, puis utilisez cette méthode pour vous assurer que la valeur être obtenu, mais il n'y aura pas de correspondance un à un, c'est-à-dire que si A.stat = 101 correspond à A.statDate est 2020-01-01, alors une erreur correspondante se produira.
101 correspond au champ qdStatDate ; 103 correspond au champ zzssStatDate, donc le cas où la méthode est utilisée pour changer de colonne, et l'effet n'est pas évident lorsqu'il y a beaucoup de colonnes et que différents contenus seront mappés
""" if (XXX, YYY, ZZZZ)"""" L'utilisation de cette méthode pour obtenir des valeurs peut résoudre les problèmes mentionnés ci-dessus
"""max(if(XXX, YYY, ZZZZ))"" L'utilisation de cette méthode peut résoudre le problème de la sélection de la valeur maximale lorsque plusieurs valeurs sont prises
Problèmes personnels rencontrés dans le projet, à titre indicatif