Thursday, October 20, 2016

7 Daagse Bewegende Gemiddelde In Sql

Ek het 'n tafel van uurlikse produk gebruik (hoeveel keer die produk gebruik word) data Net so, ek het die gebruik van data vir 4 verskillende produkte (ProductNr van 1 tot 4) gestoor word vir elke uur in die productusage tafel. Soos jy kan dink, is dit steeds groeiende as die nagtelike ETL proses die data vir die hele vorige dag dumps. As 'n produk nie gebruik word op enige uur van die dag, die rekord vir daardie uur gewoond verskyn in die tabel. Net so, as 'n produk nie gebruik word vir die hele dag, is daar gewoond enige rekord vir daardie dag in die tabel wees. Ek nodig het om 'n verslag dat die daaglikse gebruik en laaste 7 dae rollende gemiddelde en so aan gee genereer. Ek is van plan om 'n geïndekseerde View skep in SQL Server 2014 Kan jy dink aan 'n doeltreffende SQL navraag te doen gevra 18 September 14 aan 21: 08This is 'n immergroen Joe Celko vraag. Ek ignoreer wat DBMS platform gebruik word. Maar in elk geval Joe was in staat om meer as 10 jaar gelede antwoord met standaard SQL. Joe Celko SQL Puzzles en Antwoorde aanhaling: Daardie laaste update poging dui daarop dat ons die gesegde kan gebruik om 'n navraag wat vir ons 'n bewegende gemiddelde sou gee te bou: Is die ekstra kolom of die navraag benadering beter Die navraag is tegnies beter omdat die werk benadering denormalize die databasis. Maar, as die historiese data aangeteken is nie van plan om te verander en die berekening van die bewegende gemiddelde is duur, kan jy oorweeg om die benadering kolom. SQL legkaart navraag: deur al beteken uniform. Jy gooi net om die toepaslike gewig emmer, afhangende van die afstand vanaf die huidige tyd punt. Byvoorbeeld quottake weight1 vir datapunte binne 24 uur van die huidige datapoint weight0.5 vir datapunte binne 48hrsquot. Daardie geval is dit sake hoeveel opeenvolgende datapunte (soos 06:12 en 23:48) is ver van mekaar 'n gebruik geval ek kan dink sou 'n poging om die histogram waar datapunte is nie dig genoeg uitvoering maak msciwoj 27 Mei 15 stryk op wees 22:22 Ek is nie seker dat jou verwagte resultaat (uitset) toon klassieke eenvoudige bewegende (rollende) gemiddeld vir 3 dae. Omdat, byvoorbeeld, die eerste trippel van getalle per definisie gee, maar jy verwag 4,360 en sy verwarrend. Nietemin, ek stel voor die volgende oplossing, wat venster-funksie AVG gebruik. Hierdie benadering is baie meer doeltreffend (duidelik en minder hulpbron-intensiewe) as self aansluit bekendgestel in ander antwoorde (en Im verbaas dat niemand 'n beter oplossing gegee). Jy sien dat AVG is toegedraai met geval wanneer ROWNUM GT p. days dan NULL s dwing in die eerste rye, waar 3 daagse bewegende gemiddelde is betekenisloos. Hy antwoord 23 Februarie by 13:12 Ons kan aansoek doen Joe Celkos vuil links buitenste deel metode (soos hierbo aangehaal deur Diego Scaravaggi) om die vraag te beantwoord soos dit gevra is. Genereer die versoek afvoer: geantwoord 9 Januarie by 00:33 Jou Antwoord 2016 stapel Exchange, IncHow 'n SQL Bereken bewegende gemiddelde sonder 'n wyser Update: As jy besig is met die nuutste weergawes van SQL Server, kan jy die windows funksies gebruik om te bereik dieselfde ding. Ek gepos word om die updated kode aan die einde van die post. Om hierdie video, ek nog graag die denkproses van anker om 'n datum. Video: 3 daagse bewegende gemiddelde in SQL 'n doeltreffende manier om 'n bewegende gemiddelde in SQL te bereken met behulp van 'n paar truuks op datum ankers stel. Daar is debatte oor die beste manier om 'n SQL bewegende gemiddelde in SQL Server doen. Sommige mense dink daar is tye wanneer 'n wyser is mees doeltreffende. Ander dink dat jy dit alles kan doen in 'n stel wat gebaseer is weg sonder die wyser. Die ander dag het ek gaan 'n bewegende gemiddelde te bereken en my eerste gedagte was om 'n wyser gebruik. Ek het 'n paar vinnige navorsing en het gevind dat hierdie forum vraag: Moving Gemiddelde in TSQL Daar is 'n pos wat 'n subquery met 'n anker datum te help vind die 1 en 2 dag geneutraliseer toon. Hier is die skrif wat jy kan gebruik om die 3 dag SQL Gemiddeld finale uitslag Moving toets. Hier is die finale navraag. Hier is die vraag wat jy sou gebruik met SQL Server 2012. Deel hierdie: Voorheen het ons bespreek hoe om te skryf aan die rol gemiddeldes in Postgres. Deur die gewilde vraag is jy wys hoe om dieselfde te doen in MySQL en SQL Server. Wel dek hoe om lawaaierige kaarte annoteer soos volg: Met 'n 7-dag voor gemiddelde lyn soos volg: Die Big Idea Ons eerste grafiek hierbo is redelik raserig en hard om bruikbare inligting uit te kry. Ons kan dit glad deur die plot 'n 7-dag gemiddeld bo-op die onderliggende data. Dit kan gedoen word met venster funksies, self-sluit, of gekorreleer subqueries - goed dekking van die eerste twee. Wel begin met 'n voorafgaande gemiddelde, wat beteken dat die gemiddelde punt op die 7de van die maand is die gemiddelde van die eerste sewe dae. Visueel hierdie skuif die spykers in die grafiek om die reg, as 'n groot piek is gemiddeld oor die volgende sewe dae. Eerstens, maak 'n Intermediêre Telling Table Ons wil 'n gemiddelde bereken oor die totale aanmeldingen vir elke dag. Die aanvaarding van ons het 'n tipiese gebruikers tafel met 'n ry per nuwe gebruiker en 'n tyd stempel createdat, kan ons ons totaal te skep ons aanmeldingen tabel soos so: In Postgres en SQL Server jy kan dit gebruik as 'n CTE. In MySQL kan jy dit stoor as 'n tydelike tabel. Postgres Rolling Gemiddeld Gelukkig Postgres het venster funksies wat die eenvoudigste manier om 'n lopende gemiddelde bereken is. Hierdie navraag aanvaar dat die datums nie gapings het. Die navraag is gemiddeld oor die afgelope sewe rye, nie die afgelope sewe datums. As jou data het gapings, vul dit aan met generateseries of by teen 'n tafel met 'n digte datum rye. MySQL Rolling Gemiddeld MySQL ontbreek venster funksies, maar ons kan 'n soortgelyke berekening met behulp doen self-sluit. Vir elke ry in ons telling tafel, sluit ons elke ry wat binne die afgelope sewe dae en neem die gemiddelde. Hierdie navraag hanteer outomaties datum gapings, as ons kyk na rye binne 'n tydperk eerder as die voorafgaande N rye. SQL Server Rolling Gemiddeld SQL Server het venster funksies, sodat die berekening van die rollende gemiddelde gedoen kan word in óf die Postgres styl of MySQL styl. Vir eenvoud, was die gebruik van die MySQL weergawe met 'n self aan te sluit. Dit is konseptueel dieselfde as in MySQL. Die enigste vertalings is die dateadd funksie en uitdruklik genoem groep kolomme. Ander Gemiddeldes Ons fokus op die 7-dag sleep gemiddelde in hierdie pos. As ons wou om te kyk na die 7-dag voorste gemiddelde, sy so eenvoudig as in die ander rigting te sorteer die datums. As ons wou om te kyk na 'n gesentreerde gemiddelde, wed gebruik: Postgres: rye tussen 3 voorafgaande en 3 volgende MySql: tussen signups. date - 3 en signups. date 3 in MySQL SQL Server: tussen dateadd (dag, -3, aanmeldingen. datum) en dateadd (dag, 3, signups. date) Berekening waardes binne 'n rollende venster in Transact SQL Dwain Camps berekening waardes binne 'n rollende venster in SQL Enige tyd wat jy nodig het om waardes te kombineer in 'n paar rye in SQL, kan die probleem wees uitdagende, veral wanneer dit kom by performance.160 ons sal fokus op die rol van twaalf maande totale probleem, maar ons metodes aangewend kan word om enige tyd venster (bv 3 maande) of om gemiddeldes en ander riffen oor dié tyd vensters sowel. A Rolling totaal vir 'n maand is die totaal vir die maand plus die vorige maande binne die venster, of NULL as jy don8217t het die waardes vir al die vorige maande binne die venster. In vorige weergawes van SQL Server, het jy om te spring deur 'n paar hoepels om vorendag te kom met 'n metode wat goed presteer, maar SQL 2012 bied 'n paar nuwe funksies wat dit makliker maak. 160In beide gevalle, is daar verskeie geldige oplossings. 160Which is vinnigste en mees efficient160 We8217ll probeer om hierdie vraag 160in beantwoord hierdie artikel. Ons sal werk in SQL 2012 160If jy wil volg saam, jy kan gebruik maak van die Monster Queries. sql hulpbron you8217ll aangeheg vind. Data Setup en Staat van die Business Probleem Dikwels you8217ll jouself met baie transaksies binne 'n maand, maar in ons geval we8217ll aanvaar you8217ve reeds jou transaksies vir elke month.160 gegroepeer We8217ll ons primêre sleutel tot 'n datum datatipe toewys, en sluit 'n paar waardes waaroor ons wil bou aan die rol van twaalf maande totale te bekom. Dit produseer ook 'n effense verskillende navraag plan so we8217ll belangstel om te sien hoe sy prestasie resultate te vergelyk met ander oplossings tot dusver voorgestel word. Soveel vir tradisionele oplossings, en my verskoning as ek toevallig een van jou gunstelinge miskyk nie, maar voel vry om dit te kodeer en voeg dit by die prestasie toets tuig we8217ll later aan te bied om te sien hoe dit vaar. Oplossing 5: Gebruik van 'n Oulike Update As you8217ve nooit van die prettige Update (QU) en hoe dit toegepas kan word om probleme soos hardloop totale gehoor, Ek raai jy 'n lees van hierdie uitstaande artikel deur SQL MVP Jeff Moden. geregtig oplossing van die lopende totaal en ordinale posisie Probleme 0,160 Voordat ons voortgaan, moet ons daarop let dat daar diegene wat die QU metode aandring verteenwoordig 'n ongedokumenteerde gedrag van SQL Server en so is nie te wees trusted.160 Ons kan sê dat die sintaksis is duidelik beskryf deur die MS Boeke On Line inskrywing vir die update verklaring vir SQL weergawes 2005, 2008 en 2012,160 In werklikheid is dit gaan terug verder as dit. Ek het met sukses gebruik dit in SQL Server 2000, maar dit is geërf van Sybase en was in die eerste SQL Server weergawe ooit released.160 Om die naysayers I8217ll sê dat die 8220undocumented8221 gedrag is ten minste konsekwent in alle weergawes en daar is waarskynlik min rede om vermoed dat dit sal afgekeur of verandering in die toekoms weergawes van MS SQL.160 oorweeg jouself gewaarsku As jy al ooit oorweeg om 'n QU om enige probleem op te los, moet jy deeglik kennis van die baie reëls wat (ook van toepassing in die gekla artikel neem deur Jeff) 0,160 die belangrikste is, wat I8217ve hanteer in hierdie navraag, kan opgesom word as: die tafel 'n gegroepeer indeks wat die ordening van die bron rye dui deur die tydperk wat jy wil dit wil reis moet hê. Die tabel moet 'n kolom waarin jy die gemiddelde lopende totaal kan plaas nie. Wanneer jy die werk uit te voer, moet jy die tafel te sluit met die TABLOCKX navraag wenk om seker te maak niemand anders kry in enige INSERT s, verwyder is of UPDATE s voor you8217re deur. Jy moet verhoed dat SQL uit probeer om die navraag met die opsie (MAXDOP 1) wenk paralleliseer. Aangesien 'n rollende twaalf maande-gemiddelde is bloot 'n lopende totaal bedekte, kan ons 'n kolom byvoeg by ons tafel en pas 'n QU navraag aan ons berekening te doen. Ek moet erken dat dit lyk 'n bietjie slordig, met al die veranderlikes wat jy nodig het om te verklaar 0,160 Basies wat ons doen is om tred te hou van die afgelope twaalf (sloerende) waardes hou, ten einde die 12de een te verwyder (waar die Rolling12Months kolom opgedra) uit wat anders is 'n QU lopende totaal soos beskryf in Jeff8217s artikel. 160We het 'n hoë verwagtinge vir sy spoed gegee dat dit bekend is om die vinnigste metode vir die oplos van die bestuur totale probleem wees. Weereens, moet jy jouself oortuig dat die resultate is in ooreenstemming met vorige regstellings en ja hierdie oplossing steeds optree dieselfde in SQL 2012.160 As you8217re met my tot dusver, jy kan ook vra jouself 8220what gebeur as ek nodig het om te bereken verskeie hardloop twaalf maand totale regoor verskillende partitions8221160 dit is relatief maklik vir al die ander oplossings aangebied maar stel 'n bietjie van 'n uitdaging met behulp van die QU.160 die antwoord op hierdie kan gevind word in die aangehegte hulpbron lêer: Oulike werk Partitioned. sql. SQL 2012 Solutions Tot nou toe, alles wat ons gedoen het, sal werk in SQL 2008,160 Die enigste ding wat we8217ve gedoen wat nie ondersteun word in SQL 2005 is die initializations van die veranderlikes Ons verklaar d in die QU approach.160 Nou let8217s sien watter nuwe funksies SQL 2012 het wat toegepas kan word om die probleem op. Oplossing 6: Gebruik van 'n vensterraam Ons eerste SQL 2012 oplossing (6) wys hoe om 'n vensterraam wat 11 rye begin voor gebruik om die huidige ry, het deur middel van die huidige ry ons gewenste resultate som. Weereens, die teruggekeer resultate is dieselfde, maar die navraag plan is heel anders as vir die vorige oplossing SQL 2012 we8217re egter nie baie optimisties dat hierdie benadering 'n redelik presterende alternatiewe sal oplewer as gevolg van die aantal 8220look-backs8221 wat nodig is om dit te laat werk . Prestasie Vergelyking van die metodes Die ware toets om te sien hoe verskeie oplossings uit te voer is na die werklike uitvoering keer so 'n statiese bediener met behulp van 'n toets tuig met baie rows.160 Ons toets tuig getoon, saam met hoe Oplossing 1 en 2 is aangepas ( verwys na kommentaar in die kode) om: Plaas die resultate in 'n tydelike tabel om die tydsverloop impak van die terugkeer van die rye om SQL Server Management Studio8217s resultate rooster te vermy. Verwyder die datum rekenkundige, want as die opwekking van 'n multi-miljoen ry toets harnasse is dit moeilik om te genereer wat baie unieke maande, so die tafel kolom Datum is hersien om 'n BIGINT datatipe wees. Vir die res van die oplossings (2 8211 6), het ons die SVE en Tydsverloop resultate van 1M al 4M rye weergegee. Interpretasie van die resultate Verstreke en CPU keer lyk konsekwent oor die verskillende metodes te wees ten opsigte van hul ordering.160 Alle verskyn volgens skaal in 'n lineêre mode. Die prettige Update, neem aan jy kan dit verstaan ​​en al die gepaardgaande reëls, blyk die vinnigste beskikbare oplossing vir hierdie probleem opgelos kan selfs met inagneming van die nuwe funksies wat beskikbaar is in SQL 2012, die vensterraam benadering is beslis netjiese In SQL 2012, kompakte en elegant, maar effens roetes die prettige Werk oplossing oor die rye ons hierdie toetsuitslae tested.160 lyk om te voldoen aan 'n vroeëre toets op Running Totale in SQL 8220Denali8221 CTP3 deur Microsoft Certified Meester Wayne Sheffield in sy blog. As you8217re vas met 'n vorige weergawe van SQL (2005 of 2008), en vir een of ander rede wat jy can8217t bly met behulp van 'n Oulike Werk (bv as jy don8217t vertrou dat hierdie ongedokumenteerde gedrag), die vinnigste oplossings beskikbaar is vir jou óf die CROSS TOEPASSING TOP of met behulp van 'n gekorreleer sub-navraag, soos beide van diegene blyk te wees in 'n noue band oor die raad. Dit blyk dat die 8220traditional8221 INNER JOIN iets te wees avoided.160 Dit sal waarskynlik net erger as jy nodig het tot op hede somme maak binne die JOIN8217s OP clause.160 Net so, die gebruik van óf 'n oorsig tabel of meerdere LAG s (SQL 2012) beslis was nie die pad om te gaan. Ons het nie die oase - gebaseerde oplossings te verken, maar jy kan track back na die artikel verwys word op die bestuur van totale om 'n idee van hoe hulle kan verrig in hierdie case.160 I8217ve ook 'n paar oplossings wat 'n rekursiewe Gemeenskaplike Table Expression diens gesien kry (rCTE) , maar ek beslis wouldn8217t weddenskap op hul prestasie in vergelyking met die QU of vensterraam oplossings. Daar is baie maniere om waardes te bereken binne 'n rollende venster in SQL en daar is 'n paar duidelike prestasie wenners onder them.160 Ons hoop jy het gevind dat hierdie gids om die beskikbare metodes interessant en insiggewend. Downloads Totaal: 30 Gemiddeld: 4.6 / 5 Dwain Camps is 'n projekbestuurder vir baie jare. Omdat prestasie van aansoeke 'n kritieke suksesfaktor vir projekte kan wees, het hy evangelisasie op die behoefte om hoogs ontwikkel presterende SQL. Deur mentorskap en authoring artikels oor SQL, hoop hy om 'n toekomstige generasie van sagteware-ingenieurs op te lei op die regte en verkeerde maniere om SQL-kode te lewer. Hy het ook 'n spesiale belangstelling in die ontwikkeling van oplossings vir komplekse, data intensiewe probleme met behulp van 'n hoë werkverrigting SQL omdat die verklarende aard van SQL laat ontwikkeling van algoritmies unieke oplossings wat prosedurele tale nie in staat kan wees. Volg Dwain op Twitter Verwante artikels ook in SQL Met die opkoms van NoSQL databasisse wat die ontginning van aspekte van SQL vir die gebruik daarvan, en is die aanvaarding van volle transactionality, is daar 'n gevaar van die data-dokument modelle hiërargiese aard veroorsaak dat 'n fundamentele konflik met relasionele teorie Ons gevra ons verhoudings deskundige, Hugh Bin-Haad 'n moeilike omgewing vir databasis theorists. hellip Lees meer ook in SQL Server Elke SQL Server databasis programmeerder moet vertroud wees met die stelsel funksioneer te wees uitlê. Dit wissel van die sublieme (soos rowcount of identiteit) om die belaglike (IsNumeric ()) Robert Sheldon bied 'n oorsig van die mees gebruikte van them. hellip Lees meer ook in T-SQL Programmering Om ten volle gebruik te maak van die stelsel katalogus vir meer inligting oor 'n databasis uit te vind, moet jy vertroud is met die metadata funksies te wees. Hulle slaan 'n groot deel van die tyd en tik wanneer bevraagteken die metadata. Sodra jy die hang van hierdie funksies te kry, die stelsel katalogus lyk skielik maklik om te gebruik, soos Robert Sheldon toon in hierdie article. hellip Lees meer ook in T-SQL Programmering Jy moet vashou aan die gebruik van tabelle in SQL Server, eerder as om hope wat geen gegroepeer indeks, tensy jy weldeurdagte redes om hope kies. Daar is egter gebruike vir hope in spesiale omstandighede, en dit is nuttig om te weet wat hierdie gebruike is, en wanneer jy hope moet vermy. Uwe Ricken verduidelik, en toon waarom youd onwys om hope gebruik eerder as om tafels wees wanneer die data is strafbaar met change. hellip Lees meer Baie goeie Groot artikel Ek was verbaas dat LAG () het so erg. Ek dink elke aanroeping word afsonderlik gedoen eerder as faktor uit en optimale soos 'n venster. Groot verduideliking Ek stem saam, dit is 'n groot verduideliking van verskillende maniere om waardes binne 'n rollende venster te bereken. As jy hierdie voorbeelde te toets op SQL 2012 wat jy hoef te MyTable verander met RollingTotalsExample. Thanks a lot, mnr Camps Telling metode Hi Dwain, het ek opgelet dat jou Telling tafel navraag veroorsaak 'n tabel Spool operateur en gedink dat jy dalk oorweeg om die quotTallyquot deel van 'n quotDatesquot tabel soos hierdie: KIES GroupingDate, ValueMAX (CASE GroupingDate WANNEER Datum DAN a. Value end), Rolling12MonthsCASE WANNEER ROWNUMBER () oor (ORDER BY GroupingDate) Dit 12 En NULL NÓG som (Waarde) punt in ResultsSoln2 UIT RollingTotalsExample n CROSS geld (8212 Verwyder die datum rekenkundige waardes (datum), (DATE1), (DATE2), (Date3), (Date4), (Date5), (Date6), (Date7), (Date8), (Date9), (Date10), (Date11)) c (GroupingDate) GROEP DEUR GroupingDate WAT GroupingDate Dit MAX (Datum) ORDER bY GroupingDate (Verskoning as opmaak is sleg 8211 geen voorskou) Hierdie verandering steeds wouldn8217t dit 'n aanspraakmaker maak, maar maak 'n reuse-verbetering op daardie query8230 Dankie vir die kommentaar Dankie Joe en Nic. I8217m bly jy het die artikel interessant. Joe: Ek was ook effens verras deur die PG resultate en dit laat my wonder wat die gelykbreekpunt sou wees. Miskien 3 maande dalk nie so erg wees nie, maar dit is nog steeds moeilik om te glo dat dit dalk vinniger as die QU wees. Kerfstok Tabelle MM: Vir een of ander rede het ek 'n persoonlike voorkeur in-line kerfstok tafels, maar jou resultate is interessant as net om te oorweeg vir ander gevalle. Bystand met bewegende Jaarlikse Totaal My eerste post. Ek nodig het om die Moving Jaarlikse Totaal bereken vir die waarde bo vir die voorafgaande 12 maande, met vandeesmaand om maand 12. Ek moet dan die Moving Jaarlikse Totaal kry vir die 12 maande voor die. Met die idee om te MAT vergelyk vir vandeesmaand met die ooreenstemmende maand verlede jaar, en vir elke voorafgaande maand. My poging het vir my hierdie: Met CTE as (SELECT rNum ROWNUMBER () oor (einde datum) Datum Waarde Rolling12MonthsCASE WANNEER ROWNUMBER () oor (Sorteer op datum) GT 11 Toe som (Waarde) oor (Sorteer op datum rye tussen.. 11 voorafgaande sowel as huidige ry) EINDE vAN RollingTotalsExample) Kies van CTE, (Kies mRNum Max (rNum) van CTE) deMax Waar rNum tussen mRNum 8211 23 en mRNum met die vermoë om te verander die Were verklaring om te besin of ek wil vanjaar of die vorige jaar. My ware data het die datum soos in Integer 201409 wat ek dink sal die lewe makliker maak vir my as ek kan aftrek 100 die vorige jaar te kry. Uitstekende artikel en enige hulp sal waardeer word. Dit is my werkende oplossing (met 'n paar geraas) 8212 Rolling 12 maande totale behulp SQL 2012 en 'n vensterraam INDIEN object nommer (8216tempdb..PreviousYear8217) nie NULL DROP TABLE PreviousYear Met CTE as (SELECT rNum ROWNUMBER () oor (bevel deur Datum ). Datum. Waarde Rolling12MonthsCASE WANNEER ROWNUMBER () oor (Sorteer op datum) GT 11 Toe som (Waarde) oor (Sorteer op datum rye tussen 11 voorafgaande sowel as huidige ry) eINDE vAN RollingTotalsExample) Kies pyRowNum ROWNUMBER () oor (bevel deur mRNum ). . sStart mRNum 8211 24. eend mRNum 8211 12 in PreviousYear Van CTE, (Kies mRNum Max (rNum) van CTE) deMax Waar rNum tussen mRNum 8211 23 en mRNum 8211 12 8212 Rolling 12 maande totale behulp SQL 2012 en 'n vensterraam INDIEN object nommer (8216tempdb..ThisYear8217) IS NIE NULL DROP TABLE ThisYear met CTE as (SELECT rNum ROWNUMBER () oor (bevel deur Datum). Datum. Waarde. Rolling12MonthsCASE WANNEER ROWNUMBER () oor (Sorteer op datum) GT 11 Toe som (Waarde) oor (Sorteer op datum RYE TUSSEN 11 voorafgaande sowel as huidige ry) eINDE vAN RollingTotalsExample) Kies tyRowNum ROWNUMBER () oor (bevel deur mRNum). . sStart mRNum 8211 11. eend mRNum in ThisYear Van CTE, (Kies mRNum Max (rNum) van CTE) deMax Waar rNum tussen mRNum 8211 11 en mRNum Kies uit ThisYear ty Left Sluit PreviousYear py op ty. tyRowNum py. pyRowNum Hierdie I8217m kan werk nie naby 'n comp met SQL toegang oomblik so ek can8217t dit te toets (daar dalk 'n paar spelfoute / sintaksfoute). SELECT T. DateKey, AVG (T. ValueField) oor (Oder DEUR T. DateKey ASC TUSSEN 365 voorafgaande sowel as en die huidige ry) AS YMAValueField UIT DataTable AS T ORDER BY T. DateKey ASC In geval AVG is een van die totaal funksies word nie ondersteun met TUSSEN reeks (ek weet som ondersteun). SELECT T. DateKey, SUM (T. ValueField) oor (Oder DEUR T. DateKey ASC TUSSEN 365 voorafgaande sowel as en die huidige ry) / geval wanneer DATEDIFF (DAG, Begindatum, T. DateKey) Dit 365 DAN DATEDIFF (DAG, Begindatum, T. DateKey) NÓG 365 eindig as YMAValueField UIT DataTable AS T ORDER bY T. DateKey ASC SQL Sluit Eenvoudige Talk Sluit meer as 200,000 Microsoft professionele mense, en kry volle, vrye toegang tot tegniese artikels, ons twee-maandelikse Eenvoudige Talk nuusbrief, en gratis SQL gereedskap . Besoek ons ​​patrone en praktyke biblioteek om meer oor databasis lewensiklus bestuur leer. Vind uit hoe om die proses van die bou, toets en implementering van jou databasis veranderinge om risiko te verminder en maak 'n vinnige vrystellings moontlik outomatiseer. Beste onlangse artikels in T-SQL Programmering


No comments:

Post a Comment