Domanda

Ho problemi cercando di UNPIVOT seguente tabella.

| operazione | ... altre colonne ... | A1 | B1 | C1 | A2 | B2 | C2 | A3 | B3 | C3 | ... |

in qualcosa di simile ...

| operazione | ... altre colonne ... | AValue | BValue | CValue |

In questo momento sto facendo in questo modo

SELECT operation , ...other columns , Avalue, BValue , CValue
FROM (SELECT operation, ...other columns, A1, B1, C1
      FROM MyTable

      UNION ALL  

      SELECT operation, ...other columns, A2, B2, C2
      FROM MyTable

      UNION ALL

      SELECT operation, ...other columns, A3, B3, C3
      FROM MyTable
)

Il problema è che ho 30 serie di ABC, in modo da 30 sindacati. Ho provato con UNPIVOT ma non ho di essere in grado di trovare la soluzione giusta, questa è la mia prima volta cercando di usarla.

Questo è il mio tentativo UNPIVOT usign

SELECT opration
       , ...other columns ...
       ,AValue
       ,BValue
       ,CValue
FROM     MyTable
UNPIVOT ( [AValue] FOR XX IN (A1,A2,A3,...,A30)) AS upv1
UNPIVOT ( [BValue] FOR yy IN (B1,B2,B3,...,B30)) AS upv2
UNPIVOT ( [CValue] FOR ZZ IN (C1,C2,C3,...,C30)) AS upv3

Il problema è che non capisco il motivo per cui sta tornando milioni di righe, quando l'atteso dovrebbe essere di circa 10k. Tutte le idee?

EDIT:. Ho appena realizzato che ogni UNPIVOT funziona con il set di risultati della precedente dichiarazione UNPIVOT che causano l' 'esplosione dei dati'

Grazie

È stato utile?

Soluzione

Fatto! Plamen Ratchev mi ha dato l'aiuto finale qui

SELECT opration
       , ...other columns ...
       ,AValue
       ,BValue
       ,CValue
FROM     MyTable
UNPIVOT ( [AValue] FOR XX IN (A1,A2,A3,...,A30)) AS upv1
UNPIVOT ( [BValue] FOR yy IN (B1,B2,B3,...,B30)) AS upv2
UNPIVOT ( [CValue] FOR ZZ IN (C1,C2,C3,...,C30)) AS upv3
WHERE RIGHT(XX, 2) = RIGHT(YY, 2)
  AND RIGHT(XX, 2) = RIGHT(ZZ, 2)

Altri suggerimenti

Io non sono troppo chiare su quello che stai cercando, ma si potrebbe provare "unione" e non "unione tutti".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top