SELECt
Period = ‘MTD’,
Total_value = SUM(T0.TotalSumSy)
FROM dbo.INV1 T0
INNER JOIN dbo.OINV T1
ON T1.DocEntry = T0.DocEntry
WHERe
T1.DocDate >= DATEADD(month,DATEDIFF(month,‘20010101’,GETDATE()),‘20010101’)
AND
T1.DocDate < DATEADD(month,1+DATEDIFF(month,‘20010101’,GETDATE()),‘20010101’)
UNIOn ALLSELECt 'YTD', SUM(T0.TotalSumSy) FROM dbo.INV1 T0 INNER JOIN dbo.OINV T1 ON T1.DocEntry = T0.DocEntryWHERe T1.DocDate >= DATEADD(year,DATEDIFF(year,'20010101',GETDATE()),'20010101') AND T1.DocDate < DATEADD(year,1+DATEDIFF(year,'20010101',GETDATE()),'20010101') ;
WHERe使用子句中的(复杂)条件来代替之前
YEAR(column) =YEAR(GETDATE()和之前的条件,因此可以使用索引。如果将函数应用于列,则会使索引不可用(某些函数和SQL
Server的某些版本存在一些次要例外)。因此,最好的办法是尝试将条件转换为这种类型:
column <operator> AnyComplexFunction()



