<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlserver.ro/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Business Intelligence - OLAP</title><link>http://sqlserver.ro/forums/21/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: ROLLUP si CUBE partial in SQL Server 2005</title><link>http://sqlserver.ro/forums/thread/2003.aspx</link><pubDate>Sat, 02 Jun 2007 06:58:01 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2003</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2003.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=21&amp;PostID=2003</wfw:commentRss><description>&lt;p&gt;Nu sunt familiar cu clauza ROLLUP din Oracle, dar cred că poţi să obţii rezultatul dorit folosind funcţia GROUPING pentru a filtra rândurile cu subtotaluri, de exemplu:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;select continent As Continet, countryregioncode As Cod, name as Tara,sum(saleslastyear) As Vanzari&lt;br&gt;from SalesTerritory group by name, continent,countryregioncode with rollup&lt;br&gt;HAVING GROUPING(name) = GROUPING(continent)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Folosind un alt exemplu din AdventureWorks, să presupunem că avem următorul view:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;CREATE VIEW Purchasing.PurchasesByVendorsAndStates&lt;br&gt;AS&lt;br&gt;SELECT V.Name AS VendorName, A.City, s.Name AS StateProvinceName, CountryRegionCode, P.TotalDue&lt;br&gt;FROM Purchasing.PurchaseOrderHeader P INNER JOIN Purchasing.Vendor V ON P.VendorID = V.VendorID&lt;br&gt;INNER JOIN Purchasing.VendorAddress VA ON V.VendorID = VA.VendorID&lt;br&gt;INNER JOIN Person.Address AS A ON VA.AddressID=A.AddressID&lt;br&gt;INNER JOIN Person.StateProvince S ON A.StateProvinceID=S.StateProvinceID&lt;/b&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Dacă folosim direct ROLLUP, astfel:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SELECT VendorName, City, StateProvinceName, CountryRegionCode, SUM(TotalDue) AS TotalDue&lt;br&gt;FROM Purchasing.PurchasesByVendorsAndStates&lt;br&gt;GROUP BY CountryRegionCode, StateProvinceName, City, VendorName WITH ROLLUP&lt;/b&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Atunci obţinem un rezultat de genul:&lt;/p&gt;

&lt;pre&gt;VendorName                           City             StateProvinceName   CountryRegionCode TotalDue&lt;br&gt;------------------------------------ ---------------- ------------------- ----------------- ---------------------&lt;br&gt;Greenwood Athletic Company           Lemon Grove      Arizona             US                2472770.0523&lt;br&gt;NULL                                 Lemon Grove      Arizona             US                2472770.0523&lt;br&gt;NULL                                 NULL             Arizona             US                2472770.0523&lt;br&gt;Allenson Cycles                      Altadena         California          US                498589.5915&lt;br&gt;Gardner Touring Cycles               Altadena         California          US                25633.6353&lt;br&gt;NULL                                 Altadena         California          US                524223.2268&lt;br&gt;Cruger Bike Company                  Berkeley         California          US                31499.8141&lt;br&gt;Trikes, Inc.                         Berkeley         California          US                1461653.945&lt;br&gt;NULL                                 Berkeley         California          US                1493153.7591&lt;br&gt;[...]&lt;br&gt;American Bicycles and Wheels         West Covina      California          US                9641.0145&lt;br&gt;Bloomington Multisport               West Covina      California          US                8243.9511&lt;br&gt;International Bicycles               West Covina      California          US                1589172.9591&lt;br&gt;International Trek Center            West Covina      California          US                24070.75&lt;br&gt;NULL                                 West Covina      California          US                1631128.6747&lt;br&gt;NULL                                 NULL             California          US                31564099.5102&lt;br&gt;[...]&lt;br&gt;Team Athletic Co.                    Spokane          Washington          US                436401.90&lt;br&gt;Varsity Sport Co.                    Spokane          Washington          US                52176.445&lt;br&gt;NULL                                 Spokane          Washington          US                488578.345&lt;br&gt;Electronic Bike Repair &amp;amp; Supplies    Tacoma           Washington          US                2154773.3718&lt;br&gt;NULL                                 Tacoma           Washington          US                2154773.3718&lt;br&gt;NULL                                 NULL             Washington          US                18899318.6589&lt;br&gt;NULL                                 NULL             NULL                US                70479332.6383&lt;br&gt;NULL                                 NULL             NULL                NULL              70479332.6383&lt;br&gt;(169 row(s) affected)&lt;br&gt;&lt;/pre&gt;

&lt;p&gt;Dacă folosim următorul query:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SELECT VendorName, City, StateProvinceName, CountryRegionCode, SUM(TotalDue) AS TotalDue&lt;br&gt;FROM Purchasing.PurchasesByVendorsAndStates&lt;br&gt;GROUP BY CountryRegionCode, StateProvinceName, City, VendorName WITH ROLLUP&lt;br&gt;HAVING GROUPING(VendorName)=GROUPING(City)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;atunci obţinem un rezultat de tipul următor:&lt;br&gt;&lt;/p&gt;

&lt;pre&gt;VendorName                          City             StateProvinceName  CountryRegionCode TotalDue&lt;br&gt;----------------------------------- ---------------- ------------------ ----------------- ---------------------&lt;br&gt;Greenwood Athletic Company          Lemon Grove      Arizona            US                2472770.0523&lt;br&gt;NULL                                NULL             Arizona            US                2472770.0523&lt;br&gt;Allenson Cycles                     Altadena         California         US                498589.5915&lt;br&gt;Gardner Touring Cycles              Altadena         California         US                25633.6353&lt;br&gt;Cruger Bike Company                 Berkeley         California         US                31499.8141&lt;br&gt;Trikes, Inc.                        Berkeley         California         US                1461653.945&lt;br&gt;[...]&lt;br&gt;American Bicycles and Wheels        West Covina      California         US                9641.0145&lt;br&gt;Bloomington Multisport              West Covina      California         US                8243.9511&lt;br&gt;International Bicycles              West Covina      California         US                1589172.9591&lt;br&gt;International Trek Center           West Covina      California         US                24070.75&lt;br&gt;NULL                                NULL             California         US                31564099.5102&lt;br&gt;[...]&lt;br&gt;Team Athletic Co.                   Spokane          Washington         US                436401.90&lt;br&gt;Varsity Sport Co.                   Spokane          Washington         US                52176.445&lt;br&gt;Electronic Bike Repair &amp;amp; Supplies   Tacoma           Washington         US                2154773.3718&lt;br&gt;NULL                                NULL             Washington         US                18899318.6589&lt;br&gt;NULL                                NULL             NULL               US                70479332.6383&lt;br&gt;NULL                                NULL             NULL               NULL              70479332.6383&lt;br&gt;(107 row(s) affected)&lt;br&gt;&lt;/pre&gt;
&lt;p&gt;
fiind eliminate astfel subtotalurile pe fiecare oraş, păstrând doar subtotalurile după stat, ţară şi totalul general.&lt;/p&gt;

&lt;p&gt;Răzvan&amp;nbsp;&lt;/p&gt;</description></item><item><title>ROLLUP si CUBE partial in SQL Server 2005</title><link>http://sqlserver.ro/forums/thread/2002.aspx</link><pubDate>Fri, 01 Jun 2007 16:53:52 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2002</guid><dc:creator>Stefan</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2002.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=21&amp;PostID=2002</wfw:commentRss><description>&lt;p&gt;Se poate face o interogare rollup sau cube partial, ca in Oracle?&lt;/p&gt;&lt;p&gt;"select continent As Continet, countryregioncode As Cod, name as Tara,sum(saleslastyear) As Vanzari&lt;br&gt;from SalesTerritory&lt;br&gt;group by name&amp;nbsp; rollup (continent,countryregioncode) "&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Daca da, cum?&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>