Zac*_*mer 6 sql sql-server sql-server-2008
我正在打击我的头脑,这是肯定的,非常明显的 -
我有一些SQL代码,旨在将我商店中每张发票的总销售价格相加,然后按月组织.
select SUM(totalsellingprice) from dbo.tblServiceOrders
where datepart(MONTH,dbo.tblServiceOrders.datereceived) =12
Run Code Online (Sandbox Code Playgroud)
据我了解,这应该从第12个月(12月)返回所有totatlsellingprice的总和.目前,此查询返回
135998.92
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试将其放入一个组中以使其在所有月份吐出,则数字会发生变化.
select SUM(totalsellingprice) from dbo.tblServiceOrders
group by datepart(MONTH,dbo.tblServiceOrders.datereceived)
Run Code Online (Sandbox Code Playgroud)
我得到这张桌子 -
1 - 110567.70
2 - 60059.59
3 - 135998.92
4 - 63089.22
5 - 102287.01
6 - 71088.68
7 - 149102.10
8 - 67722.65
9 - 67122.45
10 - 64234.82
11 - 7542.05
12 - 130461.10
Run Code Online (Sandbox Code Playgroud)
有12排,听起来不错(一年12个月),但最后一排是130461.
第二次搜索的第12行怎么可能与我在第一次搜索中所做的不一样?我觉得我错过了一些明显的东西,但我不能为我的生活找出什么.
任何和所有的帮助将不胜感激!
Fra*_*s P 13
我知道了:
您的查询非常混乱,因为它不包含MONTH列:
如果您已经这样做了,您可能已经意识到MONTH没有对您的查询进行排序,因此MONTH 12将作为查询的第3行返回.
;)
select SUM(totalsellingprice) from dbo.tblServiceOrders
group by datepart(MONTH,dbo.tblServiceOrders.datereceived)
order by datepart(MONTH,dbo.tblServiceOrders.datereceived)
Run Code Online (Sandbox Code Playgroud)
请不要参考行索引来选择哪个月与哪个总和相关.并且应该是一个好主意,也可以区分年份(如果你需要).
| 归档时间: |
|
| 查看次数: |
18948 次 |
| 最近记录: |