Domanda

sto cercando modi per visualizzare una sola riga di dati come una singola colonna (con più righe). Ad esempio,

FieldA  FieldB
------- ---------
1       Some Text [row]


Header Value [col]
------ ------
FieldA 1          [row1]
FieldB SomeText   [row2]

C'è un modo per fare questo con SQL Server 2005?

È stato utile?

Soluzione

Yup, c'è un comando TSQL, PIVOT. E ci sono diversi thread esistenti su questo argomento; ma non riesco a trovare uno sbrigativo.

La mia risposta al solito (probabilmente 5 o 6 di quei fili) è quello di pensare di utilizzare Excel o Access, se del caso - è un modo abbastanza facile per fornire valore agli utenti finali. Ma YMMV.

Altri suggerimenti

È possibile utilizzare UNPIVOT spiegato qui

Declare @tbl Table
(
  c1 int,
  c2 int,
  c3 int
)

Insert into @tbl Values(1,2,3)

Select
  cname,
  cval
From
  (
    Select C1,C2,C3 From @tbl
  ) t
UNPIVOT
  (Cval For Cname In
    (C1,C2,C3)
  )As U

Ma di solito è inflessibile e lenta. È possibile utilizzare l'unione ma di solito è peggio in termini di maintaince ma potrebbe essere veloce (bisogno di controllare) o utilizzare query dinamica e l'unione

Un altro modo semplice:

selezionare 'FieldA', FieldA come valore dal tavolo
unione
selezionare 'FieldB', FieldB come valore dalla tabella

ma i perni sono davvero ciò che si desidera provare per.

Come molti altri hanno suggerito le risposte, utilizzare il comando T-SQL PIVOT.

Se si ha accesso a SQL Server Reporting Services, è possibile in alternativa creare un report basato sul semplice query e utilizzare il controllo report matrice. Trascinare e rilasciare i campi sul controllo, e si è fatto!

Se siete alla ricerca di qualcosa di specifico, vale a dire non una soluzione generale, ma uno su misura per le vostre specifiche DB, allora si può fare qualcosa di simile:

select Field1+';'+convert(nvarchar(255), Field2 )+';'+convert(nvarchar(255),Field3 ) from Table

Utilizzare le conversioni al nvarchar (255) in modo che non avrete problemi non importa ciò che i caratteri sono in esso, ricordate di fissare le regole di confronto prima di eseguire la selezione (non si sa mai cosa sta per accadere con il vostro orderby e di GroupBy di altro ).

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