Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Čo je kontingenčnej tabuľky v SQL ?

V SQL , kontingenčnej tabuľka je sada dát , ktorá je transformovaná z kolekcie samostatných riadkov do kolekcie stĺpcov . V relačných databázach , ako je napríklad Microsoft SQL Server , Oracle a MySQL , kontingenčné tabuľky možno použiť na zjednodušenie rozsiahle údaje , aby bolo ľahšie čítať a pochopiť . Ak chcete vytvoriť kontingenčnú tabuľku , agregát sa používa proti súborom údajov , distribuovať viac riadkov do jedného stĺpca do jedného radu s viac stĺpcov . To v podstate otáča výsledok nastaviť bokom . Ukážka dát

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ľ '


Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené