比如查出一年中每个月销售总额
10 个解决方案
#1
假设你的表结构如下:销售数量,月份,年份
每次销售都有一条纪录。
select sum(销售数量) where 年份=2003 group by 月份
没测试,应该是这样的
每次销售都有一条纪录。
select sum(销售数量) where 年份=2003 group by 月份
没测试,应该是这样的
#2
我没有使用月份和年份这两个字段,而是只有具体日期。
#3
CREATE TABLE #aa (COL1 DATETIME,SALES INT)
INSERT INTO #aa VALUES('2003-1-1',600)
INSERT INTO #aa VALUES('2003-1-3',600)
INSERT INTO #aa VALUES('2003-2-1',200)
INSERT INTO #aa VALUES('2003-3-1',100)
INSERT INTO #aa VALUES('2003-3-10',200)
INSERT INTO #aa VALUES('2003-4-1',600)
INSERT INTO #aa VALUES('2003-4-5',500)
INSERT INTO #aa VALUES('2003-4-9',300)
SELECT DATEPART(MM,COL1) AS 月份,SUM(SALES) AS 销量
FROM #aa WHERE DATEPART(YY,COL1) ='2003' GROUP BY DATEPART(MM,COL1)
DROP TABLE #aa
INSERT INTO #aa VALUES('2003-1-1',600)
INSERT INTO #aa VALUES('2003-1-3',600)
INSERT INTO #aa VALUES('2003-2-1',200)
INSERT INTO #aa VALUES('2003-3-1',100)
INSERT INTO #aa VALUES('2003-3-10',200)
INSERT INTO #aa VALUES('2003-4-1',600)
INSERT INTO #aa VALUES('2003-4-5',500)
INSERT INTO #aa VALUES('2003-4-9',300)
SELECT DATEPART(MM,COL1) AS 月份,SUM(SALES) AS 销量
FROM #aa WHERE DATEPART(YY,COL1) ='2003' GROUP BY DATEPART(MM,COL1)
DROP TABLE #aa
#4
假设表结构是:销售数量,销售单价,日期
select sum(销售数量*销售单价) as 销售总额,month(日期) as 月份 where year(日期)='2003' order by 月份
select sum(销售数量*销售单价) as 销售总额,month(日期) as 月份 where year(日期)='2003' order by 月份
#5
我是想把十二个月作为十二个汇总字段来显示,而不是十二条记录。
而是以若干个销售部门作为不同记录。这样该怎么写?我觉得应该用子查询来写。但不知该怎么写
而是以若干个销售部门作为不同记录。这样该怎么写?我觉得应该用子查询来写。但不知该怎么写
#6
group by语句啊
#7
不是这么简单吧,我说了,十二个月代表十二个汇总字段的日期条件不一样,怎么写进一条语句
#8
我是说十二个销售总额字段的日期条件不一样
#9
SELECT SUM(A.*),SUM(B.*).........,SUM(L.*)
FROM
(SELECT * FROM TABLE
WHERE MONTH=1) A,
(SELECT * FROM TABLE
WHERE MONTH=2) B,
(SELECT * FROM TABLE
WHERE MONTH=3) C,
.
.
.
(SELECT * FROM TABLE
WHERE MONTH=12) L
FROM
(SELECT * FROM TABLE
WHERE MONTH=1) A,
(SELECT * FROM TABLE
WHERE MONTH=2) B,
(SELECT * FROM TABLE
WHERE MONTH=3) C,
.
.
.
(SELECT * FROM TABLE
WHERE MONTH=12) L
#10
首先楼上的是可以实现的,假设日期 RQ(20030101),销售额amount
可以用sum(case when substring(rq,3,2)='01' then amount else 0 end) as 一月,
case when substring(rq,3,2)='02' then amount else 0 end) as 二月
..........................................
可以用sum(case when substring(rq,3,2)='01' then amount else 0 end) as 一月,
case when substring(rq,3,2)='02' then amount else 0 end) as 二月
..........................................
#1
假设你的表结构如下:销售数量,月份,年份
每次销售都有一条纪录。
select sum(销售数量) where 年份=2003 group by 月份
没测试,应该是这样的
每次销售都有一条纪录。
select sum(销售数量) where 年份=2003 group by 月份
没测试,应该是这样的
#2
我没有使用月份和年份这两个字段,而是只有具体日期。
#3
CREATE TABLE #aa (COL1 DATETIME,SALES INT)
INSERT INTO #aa VALUES('2003-1-1',600)
INSERT INTO #aa VALUES('2003-1-3',600)
INSERT INTO #aa VALUES('2003-2-1',200)
INSERT INTO #aa VALUES('2003-3-1',100)
INSERT INTO #aa VALUES('2003-3-10',200)
INSERT INTO #aa VALUES('2003-4-1',600)
INSERT INTO #aa VALUES('2003-4-5',500)
INSERT INTO #aa VALUES('2003-4-9',300)
SELECT DATEPART(MM,COL1) AS 月份,SUM(SALES) AS 销量
FROM #aa WHERE DATEPART(YY,COL1) ='2003' GROUP BY DATEPART(MM,COL1)
DROP TABLE #aa
INSERT INTO #aa VALUES('2003-1-1',600)
INSERT INTO #aa VALUES('2003-1-3',600)
INSERT INTO #aa VALUES('2003-2-1',200)
INSERT INTO #aa VALUES('2003-3-1',100)
INSERT INTO #aa VALUES('2003-3-10',200)
INSERT INTO #aa VALUES('2003-4-1',600)
INSERT INTO #aa VALUES('2003-4-5',500)
INSERT INTO #aa VALUES('2003-4-9',300)
SELECT DATEPART(MM,COL1) AS 月份,SUM(SALES) AS 销量
FROM #aa WHERE DATEPART(YY,COL1) ='2003' GROUP BY DATEPART(MM,COL1)
DROP TABLE #aa
#4
假设表结构是:销售数量,销售单价,日期
select sum(销售数量*销售单价) as 销售总额,month(日期) as 月份 where year(日期)='2003' order by 月份
select sum(销售数量*销售单价) as 销售总额,month(日期) as 月份 where year(日期)='2003' order by 月份
#5
我是想把十二个月作为十二个汇总字段来显示,而不是十二条记录。
而是以若干个销售部门作为不同记录。这样该怎么写?我觉得应该用子查询来写。但不知该怎么写
而是以若干个销售部门作为不同记录。这样该怎么写?我觉得应该用子查询来写。但不知该怎么写
#6
group by语句啊
#7
不是这么简单吧,我说了,十二个月代表十二个汇总字段的日期条件不一样,怎么写进一条语句
#8
我是说十二个销售总额字段的日期条件不一样
#9
SELECT SUM(A.*),SUM(B.*).........,SUM(L.*)
FROM
(SELECT * FROM TABLE
WHERE MONTH=1) A,
(SELECT * FROM TABLE
WHERE MONTH=2) B,
(SELECT * FROM TABLE
WHERE MONTH=3) C,
.
.
.
(SELECT * FROM TABLE
WHERE MONTH=12) L
FROM
(SELECT * FROM TABLE
WHERE MONTH=1) A,
(SELECT * FROM TABLE
WHERE MONTH=2) B,
(SELECT * FROM TABLE
WHERE MONTH=3) C,
.
.
.
(SELECT * FROM TABLE
WHERE MONTH=12) L
#10
首先楼上的是可以实现的,假设日期 RQ(20030101),销售额amount
可以用sum(case when substring(rq,3,2)='01' then amount else 0 end) as 一月,
case when substring(rq,3,2)='02' then amount else 0 end) as 二月
..........................................
可以用sum(case when substring(rq,3,2)='01' then amount else 0 end) as 一月,
case when substring(rq,3,2)='02' then amount else 0 end) as 二月
..........................................