Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
lepšie pochopiť , kontingenčnej tabuľky , napríklad niektorých údajov predaja je tu uvedený . Skopírujte nasledujúci na Microsoft SQL Server Management Studio vyskúšať príklady .
CREATE TABLE # PivotTestTable ( CustName varchar ( 8 ) , typ_položky varchar ( 8 ) , Item_Amount numeric ( 6,2 ) )
vložiť do # PivotTestTableselect ' Jason ' , ' počítača ' , 435.34unionselect ' Jason ' , ' Softvér ' , 243.54unionselect ' Jason ' , ' Monitor ' , 158.23unionselect " Alison " , " Počítač " , 345.89unionselect " Alison " , " Softvér " , 78.78unionselect " Alison " , " Monitor " , 123,45
Spustenie UnPivoted dát
temp tabuľky , # PivotTestTable , je na ňu obrátilo , výsledok je nasledujúce .
CustName typ_položky Item_Amount ---------------------------- Alison Computer 345.89Alison Monitor 123.45Alison Software 78.78Jason počítač 435.34Jason Monitor 158.23Jason Softvér 243,54
Ako môžete vidieť , sada výsledkov ukazuje dva zákazníci , Alison a Jasona , ktorí si zakúpili tri rôzne typy položiek . K dispozícii je šesť riadkov dát pre dvoch zákazníkov . Ak by sme chceli vidieť dáta v jednej rade na zákazníka , budeme používať kontingenčnej tabuľky , aby sa dosiahol požadovaný výsledok .
Pivot pomocou funkcie PIVOT
Microsoft SQL Server má funkciu PIVOT zabudovaný do servera SQL Server . Tu je príklad s dátami # PivotTestTable .
SELECTCustName ako Total_Sales_By_Cust , počítač , monitor , SoftwareFROM ( SELECTCustName , typ_položky , Item_AmountFROM # PivotTestTable ) aPIVOT ( sum ( Item_Amount ) PRE typ_položky v ( počítač , monitor , software ) ) b
Tento dotaz vráti na pôvodných šesť riadkov sklopia do dvoch radov s samostatných stĺpcoch pre každý typ položky predané . Sada výsledkov generované z tohto dotazu je tu :
Total_Sales_By_Cust Computer Monitor Software ------------------------------ --------------- Alison 345,89 123,45 435,34 158,23 243,54 78.78Jason
Pivot o súhrnných case
použitie kameniva funkcie ( SUM , AVG , MIN , MAX ) okolo case v SQL dotaze , sme schopní dosiahnuť rovnaký výsledok ako funkcia PIVOT s menej práce .
SELECTCustName ako Total_Sales_By_Cust , súčet ( prípad , kedy typ_položky " počítač " a potom Item_Amount koniec ) ako počítač , súčet ( prípad typ_položky keď " Monitor " a potom Item_Amount koniec ) ako Monitor , súčet ( prípad typ_položky keď ' Softvér ' , potom Item_Amount koniec ) ako SoftwareFROM # PivotTestTableGROUP PODĽA CustName
dotaz vráti presne rovnakú sadu výsledkov z predchádzajúceho príkladu a je len preferencie pre ktorý typ čapu na použitie .
klipart Častou chybou u kontingenčných tabuliek
spoločný chyba na vytvorenie kontingenčnej tabuľky je vytvoriť spojenie späť na zdrojovej tabuľky . To bude produkovať nespoľahlivé výsledky a je potrebné sa vyhnúť . Tento príklad je presne príklad toho , čo nerobiť . Výsledkom tejto vzorky bude rovnaký , ale tento príklad nebude fungovať vo všetkých prípadoch
SELECTp1.CustName , p1.Item_Amount ako počítač , p2.Item_Amount ako Monitor , p3.Item_Amount ako SoftwareFROM # PivotTestTable p1INNER . JOIN # PivotTestTable p2on p1.CustName = p2.CustNameand p2.Item_Type = ' Monitor'INNER JOIN # PivotTestTable p3on p1.CustName = p3.CustNameand p3.Item_Type = ' Software'WHERE p1.Item_Type = 'Hostiteľ '
Copyright © počítačové znalosti Všetky práva vyhradené