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.

È stato utile?

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

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