J'ai une table avec les données suivantespivot à plusieurs SQL Server
+-----------+-----------+----------+----------+--------+
| SourceZip | TargetZip | TargetID | Distance | rowNum |
+-----------+-----------+----------+----------+--------+
| 00602 | 08831 | 14780 | 1567.579 | R1 |
| 00602 | 08831 | 6398 | 1567.579 | R2 |
| 00602 | 07747 | 4290 | 1570.665 | R3 |
| 00603 | 08831 | 14780 | 1561.272 | R1 |
| 00603 | 08831 | 6398 | 1561.272 | R2 |
| 00603 | 07747 | 4290 | 1564.328 | R3 |
+-----------+-----------+----------+----------+--------+
Je en ai besoin dans le format suivant
+-----------+-------------+-------------+-------------+-------------+-------------+-------------+
| SourceZip | R1_TargetID | R1_Distance | R2_TargetID | R2_Distance | R3_TargetID | R3_Distance |
+-----------+-------------+-------------+-------------+-------------+-------------+-------------+
| 00602 | 14780 | 1567.579 | 6398 | 1567.579 | 4290 | 1570.665 |
| 00603 | 14780 | 1561.272 | 6398 | 1561.272 | 4290 | 1564.328 |
+-----------+-------------+-------------+-------------+-------------+-------------+-------------+
On m'a dit que je peux utiliser un seul pivot pour cette , mais chaque exemple de pivot que je peux trouver utilise une fonction d'agrégation et génère une seule colonne pour les données pivotées.
Est-ce quelque chose que je peux faire avec un seul pivot, ou ai-je besoin de générer deux tableaux croisés dynamiques distincts (un pour chaque TargetID et Distance) et ensuite les joindre?
MISE À JOUR
J'ai fini par combiner les champs dont j'ai besoin en une seule valeur qui peut parser dans l'application des données est Transmis à
select *
from (SELECT SourceZip, CONVERT(varchar(10), TargetID)+ '|' + CONVERT(varchar(10), Distance) as TargetSite, rowNum
FROM Targets
) as SourceTable
pivot (min(TargetSite)
for rowNum in (R1
,R2
,R3
)
) as pivottable
Ce n'est pas idéal, mais il fonctionne.
Je encore apprécier des suggestions pour faire pivoter plusieurs colonnes
Merci, ça l'a fait. J'ai fini par couler les deux comme des flotteurs au lieu de varchars et cela a fonctionné comme un charme. – Broom