金额返回0而不是实际金额的总和
问题描述:
我有下面的查询,其中金额(金额)字段返回我0而不是实际的金额值。量场的金额返回0而不是实际金额的总和
数据类型是十进制(15,2)
查询:
SELECT Period
,count(DISTINCT Trans_Date) as [Date_count]
,count(*) as Row_No
,sum([Amount]) as [Amount_Value]
,count(*)-count([Amount]) as [Amount_null]
FROM table1
GROUP BY Period
ORDER BY Period
结果:
Period Date_count Row_No Amount_Value Amount_null
2014/03 31 15486 0.00 0
你会建议任何可能的原因?谢谢。
表模式:
CREATE TABLE table1(
[Period] [varchar](7) NOT NULL,
[Account] [varchar](12) NULL,
[Trans_Date] [date] NULL,
[Amount] [decimal](15, 2) NULL
)
样本数据:
Period Account Trans_Date Amount
2014/03 0-03-01 4517.45
2014/03 0-03-01 2120.77
2014/03 0-03-01 3115.69
2014/03 001245 2014-03-01 1803.78
2014/03 001245 2014-03-01 596.33
2014/03 001245 2014-03-01 null
答
合乎逻辑的结论是,Amount
您的数据总和,事实上,0.00元。
你作为样本的数据,则返回正确的结果:
PERIOD DATE_COUNT ROW_NO AMOUNT_VALUE AMOUNT_NULL
2014/03 1 6 12154.02 1
Here是SQL小提琴。
只是为了纠正评论中的一些误解。
- NULL值在
SUM()
(和AVG()
和MIN()
和MAX()
太) -
count(*)-count([Amount])
是否被正确用于计数NULL
值的数目(尽管我更喜欢的sum(case when Amount is NULL then 1 else 0 end)
的更明确的制剂)将被忽略。
请发布架构和示例数据。 – 2014-09-04 23:45:09
另外,请在删除“GROUP BY”语句时发布SELECT查询的结果。 – Dai 2014-09-04 23:47:36
count [*] - count([Amount])作为[Amount_null]将始终产生0,因为您获得的计数值相同。 – 2014-09-04 23:52:00