我有這個疑問,它返回null:SQL SUM計算字段
SELECT
SUM(sales) as [MAT]
from
TABLE2
where
Date1 between CONVERT(VARCHAR(23), DATEADD(MONTH, -11, Date1), 111) and
CONVERT(VARCHAR(23), DATEADD(MONTH, 0, Date1), 111);
在列,日期1格式爲YYYY-DD-MM
,這就是爲什麼我把它轉換。
我想從產品(另一場),每個日期的金額這兩個日期之間的總和。
--UPDATE--
嗨,我已經改變了格式DATETIME
。現在查詢看起來是這樣的:
SELECT
SUM(sales)as [MAT]
from
TABLE2
where
Date1 between DATEADD(MONTH,-11,Date1) and DATEADD(MONTH,0,Date1);
它顯示了我所有產品的總量,並且我希望總數爲每個...任何想法? @DanBracuk
[不良習慣踢:錯誤處理日期/範圍查詢(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling -date-range-queries.aspx) - 你應該**不要**將日期存儲爲字符串 - 你只是要求這樣的麻煩。 ***請使用'DATE'或'DATETIME'數據類型 –
看起來您在BETWEEN表達式的左側和右側使用了相同的日期字段。我認爲你希望BETWEEN右邊的Date1變量是文字日期,或者查詢的參數或其他字段。 –
在我看來,date1是一個日期/日期時間數據類型,所以部分是好的。它也使轉換功能不必要。 @PaulChernoch說得很好。 –