{"id":4893,"date":"2010-06-22T23:02:19","date_gmt":"2010-06-22T21:02:19","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/?p=4893"},"modified":"2010-06-22T23:02:19","modified_gmt":"2010-06-22T21:02:19","slug":"sql-basics-apply","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2010\/06\/22\/sql-talk\/sql-basics-apply","title":{"rendered":"SQL-Basics: APPLY"},"content":{"rendered":"<p>Wer immer schon mal wissen wollte, wie APPLY eigentlich funktioniert, der findet bei<br \/>\nsimple-talk.com dazu einen interessanten Artikel: &quot;<a href=\"http:\/\/www.simple-talk.com\/sql\/t-sql-programming\/sql-server-apply-basics\/\">SQL Server APPLY Basics<\/a>&quot;.<\/p>\n<p>Leider geht er nicht besonders tief und vermittelt den Eindruck als w&#252;rde APPLY nur mit einer Funktion gehen. tats&#228;chlich geht es auch mit einer derived table. Hier zwei Beispiele aus der Adventureworks auf SQL Server 2005.<\/p>\n<p>APPLY mit Function:<\/p>\n<p><code lang=\"sql\">SELECT<br \/>\n  sp.FirstName + &#x0027; &#x0027; + sp.LastName AS FullName,<br \/>\n  fn.SalesAmount<br \/>\nFROM<br \/>\n  Sales.vSalesPerson AS sp<br \/>\nCROSS APPLY<br \/>\n  fn_sales(sp.SalesPersonID) AS fn<\/code><\/p>\n<p>APPLY mit derived table:<\/p>\n<p><code lang=\"sql\">SELECT<br \/>\n  sp.FirstName + &#x0027; &#x0027; + sp.LastName AS FullName,<br \/>\n  fn.SalesAmount<br \/>\nFROM<br \/>\n  Sales.vSalesPerson AS sp<br \/>\nCROSS APPLY<br \/>\n  (  SELECT TOP 3<br \/>\n    SalesPersonID,<br \/>\n    ROUND(TotalDue, 2) AS SalesAmount<br \/>\n  FROM<br \/>\n    Sales.SalesOrderHeader<br \/>\n  WHERE<br \/>\n    SalesPersonID = sp.SalesPersonID<br \/>\n) AS fn<\/code><\/p>\n<p>Spannend ist sich den Zugriffsplan anzusehen&#8230; Ganz sch&#246;ner Unterschied zwischen beiden Arten, gelle?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer immer schon mal wissen wollte, wie APPLY eigentlich funktioniert, der findet bei simple-talk.com dazu einen interessanten Artikel: &quot;SQL Server APPLY Basics&quot;. Leider geht er nicht besonders tief und vermittelt den Eindruck als w&#252;rde APPLY nur mit einer Funktion gehen. tats&#228;chlich geht es auch mit einer derived table. Hier zwei Beispiele aus der Adventureworks auf [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[741,685],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/4893"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=4893"}],"version-history":[{"count":4,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/4893\/revisions"}],"predecessor-version":[{"id":4941,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/4893\/revisions\/4941"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=4893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=4893"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=4893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}