Visualizzare un singolo record (riga) in un'unica colonna
-
23-08-2019 - |
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?
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 ).