0

Son zamanlarda Microsoft SQL Server 2012 T-SQL Temel Kitabı'nı T-SQL'i öğrenmek için kullanmaya başladım. Aşağıdaki sorgu Ben 2008 R2Microsoft SQL Server 2012'den örnek sorgu T-SQL temel çalışmıyor

sorgu aşağıdaki hata iletisini

Msg 102, Level 15, State 1, Line 5 
Incorrect syntax near 'ROWS'. 

bununla çalıştırma başarısız

SELECT empid, ordermonth, val, 
SUM(val) OVER(PARTITION BY empid 
       ORDER BY ordermonth 
       ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS runval 
FROM Sales.EmpOrders; 

SQL Server yürütme çalıştı sales.emporders fragmanı görüntülemek olduğu

empid ordermonth     qty  val   numorders 
----------------------------------------------------------------- 
5  2007-10-01 00:00:00.000  361  7581.33   9 
6  2007-06-01 00:00:00.000  173  3464.81   7 
9  2007-09-01 00:00:00.000  93  8776.15   5 
5  2008-02-01 00:00:00.000  276  5377.06   15 
5  2007-07-01 00:00:00.000  213  6475.40   5 
4  2006-10-01 00:00:00.000  613  13718.97  27 

SQL Server 2008 için bir çalışma bulmak için yardıma ihtiyacınız var. R2

+0

Bu, önceki SQL Server sürümlerinde değil, SQL Server 2012 ile kullanılabilecek yeni bir özelliktir. SQLServer 2012 – Eralper

+0

http ile yeni olan analitik işlevler hakkında satır aralığı makalesini http://www.kodyaz.com/t-sql/sql-last_value-analytic-function-sample-in-sqlserver2012.aspx uygulayabilirsiniz: //stackoverflow.com/questions/860966/calculate-a-running-total-in-sql-server –

cevap

1

SQL Se yok rver 2012 işlevselliği. Sen ÜZERİNDEN işlevini kullanabilirsiniz ama 2008R2 hiçbir işlevselliği için vardır: sınırsız ARASINDAKİ ROWS ÖNCEKİ

SEE:

https://msdn.microsoft.com/en-us/library/ms189461(v=sql.105).aspx (2008R2)

VE

https://msdn.microsoft.com/en-us/library/ms189461(v=sql.110).aspx (2012)

+0

Lütfen, 2008 r2 için çalışan bir val alanının, belirli bir ay için her bir empid için hesaplandığı bir geçici çözüm önerebilir misiniz? – user2865469

+0

Will Bu gece bir göz at. – Jeffrey

0
SELECT empid, 
     ordermonth, 
     val, 
     (SELECT SUM(val) 
     FROM Sales.EmpOrders ee 
     WHERE e.empid=ee.empid 
     AND ee.ordermonth<=e.ordermonth) AS runval 
FROM Sales.EmpOrders e; 
0

UNBOUNDED PRECEDING kullanıyorsanız bence sadece
Denedin mi?

SELECT empid, ordermonth, val 
    , SUM(val) OVER(PARTITION BY empid ORDER BY ordermonth) AS runval 
FROM Sales.EmpOrders; 
+0

iyi görünüyor sql server 2008 dosent sadece bölümleme destekler ve toplu işlevleri için sipariş değil – user2865469