J'ai un ensemble de données qui ressemble à ce qui suit:SQL - Créer un attribut de sortie pour les données non pivoté
Position_Date Portfolio Country Weight BM Weight
2017-09-30 Port1 Mexico 0.2 0.0
2017-09-30 Port1 Mexico 0.1 0.1
2017-09-30 Port1 USA 0.2 0.2
2017-09-30 Port1 USA 0.3 0.1
je voudrais transformer ces données stockées définies dans la sortie suivante à l'aide d'une requête SQL:
Portfolio_Date Portfolio Dimension Dimension_Value Measure Measure_Value
2017-09-30 Port1 Country Mexico Weight 0.3
2017-09-30 Port1 Country Mexico BM Weight 0.1
2017-09-30 Port1 Country USA Weight 0.5
2017-09-30 Port1 Country USA BM Weight 0.3
2017-09-30 Port1 Portfolio Country Weight 0.8
2017-09-30 Port1 Portfolio Country BM Weight 0.4
Je me demandais quelle serait la raison pour laquelle créer l'ensemble de données? Aurais-je besoin de PIVOTER les données pour ensuite les UNPIVOT pour créer mon ensemble de données final? Ou y a-t-il une autre façon d'utiliser CROSS APPLY avec un GROUP BY que je pourrais utiliser et que j'ai vu dans d'autres publications sur ce forum?
Merci
Merci pour le point dans la bonne direction @Gordon Linoff –
me demandais si vous pouviez me expliquer vos commentaires sur COALESCE étant un raccourci pour obtenir la ligne agrégée? @Gordon Linoff –
@chrissyp. . . 'grouping sets' renvoie des valeurs' NULL' pour les lignes d'agrégation. Bien sûr, les clés d'origine pourraient déjà avoir 'NULL', donc c'est une solution hacky (mais très pratique). La bonne façon est d'utiliser 'grouping()', mais cela nécessite un 'case'. –