Domanda
La mia tabella ha le seguenti colonne:
A | B | C | D | E | F
Voglio visualizzarlo come segue:
MyColumn | MyColumn2
A | B
C | D
E | F
Come puoi vedere, voglio visualizzare le colonne come coppie con un nome di colonna personalizzato.Le coppie sono colonne A e B, colonne C e D e colonne C e D.
Soluzione
select A as [Col 1], B as [Col 2] from table
union all
select C,D from table
union all
select E,F from table
Altri suggerimenti
Se ti sto comprensione correttamente si può fare questo con un sindacato:
SELECT A as MyColumn, B as MyColumn2
UNION
SELECT C as MyColumn, D as MyColumn2
UNION
SELECT E as MyColumn, F as MyColumn2
Se i tipi di dati non sono gli stessi per le colonne di corrispondenza, allora è necessario convertire il tipo di dati prima, in modo da qualcosa come:
SELECT CONVERT(VARCHAR(10), A) as MyColumn, CONVERT(VARCHAR(10), B) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), C) as MyColumn, CONVERT(VARCHAR(10), D) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), E) as MyColumn, CONVERT(VARCHAR(10), F) as MyColumn2
Questa non scala per un miliardo di colonne, ma ...
Select A as MyColumn, B as MyColumn2 from Table
UNION
Select C as MyColumn, D as MyColumn2 from Table
UNION
Select E as MyColumn, F as MyColumn2 from Table
Questa query rimuoverà i duplicati però. Quindi dire che c'è un record nella tabella
Ciao | mondo | Ciao | mondo | Ciao | World
Il mio selezionare restituirà solo
Ciao | World
Sambo torneranno tutti e tre ...
In SQL Server 2005 l'operatore Unpivot può risolvere il tuo problema.Unpivot converte le colonne in righe in SQL Server 2005.
Spero che sia d'aiuto