{"id":30656,"date":"2024-03-13T07:08:00","date_gmt":"2024-03-13T06:08:00","guid":{"rendered":"https:\/\/expert-only.com\/?p=30656"},"modified":"2024-03-13T11:52:46","modified_gmt":"2024-03-13T10:52:46","slug":"esempio-di-unpivot-in-sql-server","status":"publish","type":"post","link":"https:\/\/expert-only.com\/it\/t-sql\/esempio-di-unpivot-in-sql-server\/","title":{"rendered":"Esempio di UNPIVOT in SQL Server"},"content":{"rendered":"\n<p><strong>Con questo esempio di T-SQL, puoi facilmente trasformare colonne in righe con un solo passo grazie alla funzione UNPIVOT di SQL Server.<\/strong><\/p>\n\n\n\n<p>\u00c8 l&#8217;esatto opposto della query PIVOT. In questo esempio, vengono utilizzate solo le colonne dei primi sei mesi dell&#8217;anno, da gennaio a giugno. Tuttavia, puoi estendere la query a tutti i 12 periodi dell&#8217;anno aggiungendo quelli mancanti.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/expert-only.com\/it\/t-sql\/esempio-di-unpivot-in-sql-server\/#1-crea-dati-da-trasformare-in-righe-usando-loperatore-unpivot\" >1. Crea dati da trasformare in righe usando l&#8217;operatore UNPIVOT<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/expert-only.com\/it\/t-sql\/esempio-di-unpivot-in-sql-server\/#2-inserisci-dati-nella-tabella-sorgente-da-trasformare\" >2. Inserisci dati nella tabella sorgente da trasformare<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/expert-only.com\/it\/t-sql\/esempio-di-unpivot-in-sql-server\/#3-query-unpivot-di-sql-server-per-trasformare-colonne-in-righe\" >3. Query UNPIVOT di SQL Server per trasformare colonne in righe<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"h-1-crea-dati-da-trasformare-in-righe-usando-l-operatore-unpivot\"><span class=\"ez-toc-section\" id=\"1-crea-dati-da-trasformare-in-righe-usando-loperatore-unpivot\"><\/span>1. Crea dati da trasformare in righe usando l&#8217;operatore UNPIVOT<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ad esempio, la tabella delle vendite di SQL Server contiene una colonna per il tipo e le colonne per i mesi. Contengono rispettivamente il tipo e l&#8217;importo delle vendite per il mese. Per iniziare, basta copiare e incollare la query SQL per la creazione della tabella all&#8217;interno di SSMS.<\/p>\n\n\n\n<p><strong>Prima di tutto, crea la tabella di esempio usando questo script, semplicemente copia e incolla l&#8217;esempio nella tua finestra di SQL Server Management Studio.<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Prima di tutto ELIMINA la tabella Vendite per mese se gi\u00e0 esiste nel db\nIF EXISTS( \n\tSELECT 1 FROM sys.objects\n     WHERE object_id = object_id(N'[dbo].[SALES_BY_MONTH]')\n\t\tAND type in (N'U') )\n-- BEGIN DROP TABLE [dbo].[SALES_BY_MONTH]\nEND;\n\n-- Crea la tabella VENDITE\nCREATE table [dbo].[SALES_BY_MONTH] (\n    [SalesType] NVARCHAR(20),\n    [January] NUMERIC(5),\n    [February] NUMERIC(5),\n    [March] NUMERIC(5),\n    [April] NUMERIC(5),\n    [May] NUMERIC(5),\n    [June] NUMERIC(5)\n);\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-2-inserisci-dati-nella-tabella-sorgente-da-trasformare\"><span class=\"ez-toc-section\" id=\"2-inserisci-dati-nella-tabella-sorgente-da-trasformare\"><\/span>2. Inserisci dati nella tabella sorgente da trasformare<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><strong>Successivamente, inserisci i dati nella tabella da trasporre. Ogni inserimento di dati SQL aggiunge 12 nuovi importi di vendite. Una colonna per mese, con il tipo di vendita associato.<\/strong><\/p>\n\n\n\n<p>Aggiungi i mesi mancanti se necessario. In questo modo potrai trasformare i 12 mesi dell&#8217;anno da colonne a righe in un&#8217;unica query di SQL Server.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Inserisci dati di vendita di esempio per ogni mese: ad es. da gennaio a giugno\n-- Le colonne dei mesi verranno trasposte da colonne a righe\nINSERT INTO dbo.SALES_BY_MONTH ( [SalesType], [January], [February], [March], [April], [May], [June] )\nVALUES ( N'Vendite', 1000, 2000, 3000, 4000, 5000, 6000);\n\nINSERT INTO dbo.SALES_BY_MONTH ( [SalesType], [January], [February], [March], [April], [May], [June] )\nVALUES ( N'Sconti', 100, 200, 300, 400, 500, 600);\n\nINSERT INTO dbo.SALES_BY_MONTH ( [SalesType], [January], [February], [March], [April], [May], [June] )\nVALUES ( N'Offerte', 10, 20, 30, 40, 50, 60);\n\n-- Controlla le righe inserite nella tabella delle vendite\nSELECT * \nFROM   dbo.SALES_BY_MONTH;<\/pre>\n\n\n<div class=\"wp-block-image wp-image-394 size-full\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/expert-only.net\/wp-content\/uploads\/2017\/06\/UNPIVOT-Source-Table-SQL-Server.png\" alt=\"Inserisci dati per trasformare da colonne a righe usando T-SQL UNPIVOT\" class=\"wp-image-394\"\/><figcaption class=\"wp-element-caption\"><em>Inserisci dati per trasformare da colonne a righe usando T-SQL UNPIVOT<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-3-query-unpivot-di-sql-server-per-trasformare-colonne-in-righe\"><span class=\"ez-toc-section\" id=\"3-query-unpivot-di-sql-server-per-trasformare-colonne-in-righe\"><\/span>3. Query UNPIVOT di SQL Server per trasformare colonne in righe<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Infine, la funzione UNPIVOT di SQL Server si compone di 3 diversi passaggi per trasporre le colonne in righe.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>La selezione delle 3 colonne di risultato, ovvero Tipo, Mese e Importo.<\/li>\n\n\n\n<li>Quindi la sub-query SQL con la selezione originale dei dati.<\/li>\n\n\n\n<li>L&#8217;operazione UNPIVOT in s\u00e9 con i 6 mesi nominati esplicitamente.<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"mssql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- UNPIVOT Colonne in Righe con Query SQL\nSELECT [TYPE], Month, Amount\nFROM (\t\n\tSELECT [TYPE], [January], [February], [March], [April], [May], [June]\n\tFROM dbo.SALES_BY_MONTH \t) sbm\nUNPIVOT\n   (Amount FOR Month IN \n      ([January], [February], [March], [April], [May], [June])\n)AS SalesUnPivot;\n<\/pre>\n\n\n<div class=\"wp-block-image wp-image-395 size-full\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/expert-only.net\/wp-content\/uploads\/2017\/06\/SQL-Server-UNPIVOT-Columns-To-Rows.png\" alt=\"Esempio di query UNPIVOT di SQL Server in SSMS\" class=\"wp-image-395\"\/><figcaption class=\"wp-element-caption\"><em>Esempio di query UNPIVOT di SQL Server in SSMS<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-riguardo-gli-operatori-pivot-e-unpivot-di-sql-server\">Riguardo gli operatori PIVOT e UNPIVOT di SQL Server<\/h3>\n\n\n\n<p>In aggiunta, se stai ancora incontrando difficolt\u00e0 con l&#8217;operatore UNPIVOT di SQL Server e la sua sintassi, semplicemente copia e incolla l&#8217;esempio e ripeti i tre passi adattandoli al tuo caso reale. Inizia rinominando le colonne per capire come funziona. In conclusione, per leggere pi\u00f9 dettagli, la documentazione ufficiale Microsoft per la <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/queries\/from-using-pivot-and-unpivot?view=sql-server-2017\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">funzione unpivot<\/a> \u00e8 disponibile. L&#8217;UNPIVOT \u00e8 l&#8217;opposto della funzione <a href=\"https:\/\/dictionary.cambridge.org\/dictionary\/english\/pivot\" target=\"_blank\" rel=\"noreferrer noopener\">PIVOT<\/a>, ecco un altro breve tutorial per usare la <a href=\"https:\/\/expert-only.com\/en\/t-sql\/how-to-pivot-rows-to-columns-in-sql-server\/\"><strong>funzione PIVOT di SQL Server<\/strong><\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-wp-embed is-provider-tutoriels-sql-et-it wp-block-embed-tutoriels-sql-et-it\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"lWUu3IcV1a\"><a href=\"https:\/\/expert-only.com\/en\/t-sql\/how-to-pivot-rows-to-columns-in-sql-server\/\">How to Pivot Rows To Columns in SQL Server ? Simple Query<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;How to Pivot Rows To Columns in SQL Server ? Simple Query&#8221; &#8212; Tutoriels SQL et IT\" src=\"https:\/\/expert-only.com\/en\/t-sql\/how-to-pivot-rows-to-columns-in-sql-server\/embed\/#?secret=ZvIqfniCoB#?secret=lWUu3IcV1a\" data-secret=\"lWUu3IcV1a\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Usa l&#8217;operatore UNPIVOT di SQL Server per trasformare i dati da colonne a righe, esempio di query T-SQL spiegato passo dopo passo. <a class=\"mh-excerpt-more\" href=\"https:\/\/expert-only.com\/it\/t-sql\/esempio-di-unpivot-in-sql-server\/\" title=\"Esempio di UNPIVOT in SQL Server\">&#8230;<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":30661,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[696],"tags":[],"class_list":{"0":"post-30656","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-t-sql"},"_links":{"self":[{"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/posts\/30656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/comments?post=30656"}],"version-history":[{"count":1,"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/posts\/30656\/revisions"}],"predecessor-version":[{"id":30660,"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/posts\/30656\/revisions\/30660"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/media\/30661"}],"wp:attachment":[{"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/media?parent=30656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/categories?post=30656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/expert-only.com\/it\/wp-json\/wp\/v2\/tags?post=30656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}