Web design and hosting, database, cloud and social media solutions that deliver business results
  • Soluzioni aziendali
    • automazione dei processi robotici
    • Software
    • Servizi database
      • Aggiornamento del server e servizi DBA
      • Integrazione dei dati
      • Power BI
      • Servizi di Datawarehouse
    • Sito Web Design
      • Design del logo
      • Gateway di pagamento
      • Localizzazione e traduzione web
      • Ottimizzazione del sito web
      • Sicurezza del sito
      • Strumenti tecnici
    • Servizi per gli affari
      • Microsoft Azure
      • Servizi Google Cloud
      • Servizi Web Amazon
    • Microsoft Office
    • Servizi di consulenza e gestione dei social media
  • Accademia
    • Il nostro ambiente di prova
    • Imparare a usare i database
      • Le basi
      • Ottieni una query aperta
      • Piano di manutenzione di SQL Server 2008
      • Utilizzo dei dati di SQL Server
      • Utilizzo delle date di SQL Server
      • Utilizzo delle funzioni di SQL Server
      • Utilizzo di SQL Server Pivot-Unpivot
      • Strumenti
    • Imparare il web design
      • Costruire il sistema di gestione dei contenuti di Ousia
      • ASP-NET
      • CSS
      • Utilizzo di JavaScript
    • Usando i social media
      • Chiedere una recensione su Google
      • Dimensioni delle immagini dei social media
      • Modifica di un account Facebook da personale a aziendale
      • Scegliere dove concentrare lo sforzo sui social media
      • Utilizzo dei metadati per impostare le immagini dei social media
    • Imparare a usare il cloud e i servizi informatici
      • Errore dell'utilità di pianificazione 2147943645
      • Richiesta SSL e generazione di file PFX in OpenSSL Simple Steps
  • Chi Siamo
    • Carriere
      • Traduttore inglese-portoghese
      • Traduttore inglese-spagnolo
    • Portfolio
    • Squadra
      • Adrian Anandan
      • Alì Al Amine
      • Ayse Hur
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • Suneel Kumar
      • Surya Mukkamala
Deutsch (DE)English (EN-GB)English (EN-US)Español (ES)हिंदी (HI)italiano (IT)日本語 (JA)Português (PT)

Utilizzo di PIVOT in server SQL con esempio di SQL dinamico

SQL Server utilizza una funzione PIVOT complessa in uno scenario di tipo reale, in cui il numero di colonne potrebbe non essere sempre lo stesso.

Autore

Utilizzo di Picot con SQL dinamico

Nell'ultimo articolo, ho scritto sull'utilizzo di PIVOT in uno scenario standard in cui conosci tutte le colonne che desideri, utilizzando gli stessi dati su cui ora possiamo basarci per produrre nomi di colonna dipendenti dal set di dati effettivo.

Salterò la prima parte di quell'articolo ma fornirò l'SQL per metterci in funzione qui. Innanzitutto, creiamo un set di dati.

Altro: SQL Server che utilizza l'esempio PIVOT
CREATE TYPE c1bs_Piv AS TABLE(MyRow NVARCHAR(10),--Row IDMyCol NVARCHAR(10),--Value to become columnCalcCol INT--Value to be Summed)GODECLARE @Piv c1bs_PivINSERT INTO @PivSELECT '1','1',1 UNIONSELECT '1','s',1 UNIONSELECT '1','3',1 UNIONSELECT '2','2',6 UNIONSELECT '2','2',1 UNIONSELECT '2','3',1 UNIONSELECT '3','5',5 UNIONSELECT '3','2',1 UNIONSELECT '3','3',1 UNIONSELECT '3','3',3

È stato utile?

Nell'altro articolo, abbiamo codificato a fondo i nomi delle colonne (1,2,3), tuttavia, questo potrebbe non essere sempre fattibile, a volte i set di record potrebbero dover crescere quando, ad esempio, si invia un set di dati a una GUI, c'è un aggirandolo, esaminiamolo passo dopo passo;

  • Crea un tipo di tabella per rappresentare i tuoi dati come sopra.
  • Dichiara una tabella e inserisci i tuoi dati in essa (@Piv)
  • Dichiara due variabili, una per mantenere i nomi delle colonne su Pivot e una per l'elenco SELECT, in questo esempio, usando un ISNULL e i nomi delle colonne eliminano qualsiasi valore NULL. Abbiamo anche usato COALESCE per concatenare i nomi in una stringa.
  • Dichiara un'altra variabile, con la tabella @Piv, questi sono parametri che vengono passati in seguito.
  • Dichiara il nostro SQL, è qui che inseriamo i nomi delle colonne e selezioniamo l'elenco in una versione modificata del semplice PIVOT.
  • ESEGUIRE l'istruzione SQL sopra e passare i parametri e la tabella @PIV.
--Complex Pivot - unknown column names--Get Column Names for belowDECLARE @Cols NVARCHAR(MAX),@Sel NVARCHAR(MAX) SELECT @Cols=COALESCE(@Cols+',','')+'['+MyCol+']',--Concatenate the Columns  @Sel =COALESCE(@Sel +',','')+'ISNULL(['+MyCol+'], 0) AS ['+MyCol+']' --Concatenate the Columns into a select listFROM @Piv GROUP BY MyCol 
--Columns list displaySELECT @Cols ColumnList,@Sel SelectList
--Complex Pivot SQLDECLARE @Params NVARCHAR(MAX)='@Piv c1bs_Piv READONLY'DECLARE @SQL NVARCHAR(MAX)='SELECT [MyRow],'+@Sel+'FROM @PivPIVOT (SUM(CalcCol)FOR MyColIN ('+@Cols+')) AS MyTable'
--Execute SQLEXECUTE sp_executesql @SQL,--SQL String from above@Params,--Parameter list@Piv--Temp Table needs to be passed in, can only be read only?

È stato utile?

Il nostro set di dati è ora cresciuto per includere due colonne aggiuntive dal set di dati (5,s)

MyRow1235s
110101
207100
301450

Autore

È stato utile?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

Site Links

RSSLoginLink Cookie PolicyMappa del sito

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom

Partnered With

Le impostazioni di questo sito sono impostate per consentire tutti i cookie. Questi possono essere modificati sulla nostra pagina politica e le impostazioni dei cookie. Continuando a utilizzare questo sito l'utente accetta l'utilizzo dei cookie.
Ousia Logo
Logout
Ousia CMS Loader