两个表
A表:
名称 进货时间 价格
糖 2008-10-1 12
糖 2008-10-10 12.5
油 2008-11-1 8B表:
名称 销售时间 价格
油 2008-11-11 8.5
糖 2008-11-10 15
糖 2008-11-15 15.5我想查询得到某个货物在某段时间内的进货金额和销售价格金额分别是多少?比如糖在10月份进货的金额是24.5,销售金额是0,在11月份进货的金额是0,销售的金额是30.5。
A表:
名称 进货时间 价格
糖 2008-10-1 12
糖 2008-10-10 12.5
油 2008-11-1 8B表:
名称 销售时间 价格
油 2008-11-11 8.5
糖 2008-11-10 15
糖 2008-11-15 15.5我想查询得到某个货物在某段时间内的进货金额和销售价格金额分别是多少?比如糖在10月份进货的金额是24.5,销售金额是0,在11月份进货的金额是0,销售的金额是30.5。
解决方案 »
- 初学者求指点,我还在交互式命令行中慢慢的敲!
- 高手来啊!!!求解决
- 请[邹建]大哥再帮个忙! ---包含子查询的DELETE语句出错
- 如何读取不同服务器MSSQL数据库里的内容.
- 让一个字段的值自动取当前的行号,请问如何实现?
- 在sql server 2005 中,忘记sa 密码,禁用了 windows 认证登陆的用户(administrator),怎么办?
- 在SQl语句INSERT中~怎么调用SQL数据库服务器的的时间~~~谢谢!
- SQL server2000安装的问题:(
- 邹大哥请进:工资计算公式的分析
- 临时表的问题?
- sql server的分离和附加的问题
- sqlserver 数据导出到文本文件?
select 0 as 销售金额,sum(价格) as 进货金额
FROM A WHERE Month(进货时间)=10 AND 名称=糖 GROUP BY 名称
UNION ALL
select sum(价格) as 价格,0 as 进货金额
FROM A WHERE Month(进销售时间)=10 AND 名称=糖 GROUP BY 名称
(select 名称 , convert(varchar(7),进货时间,120) 月份 , sum(价格) pr from a group by 名称 , convert(varchar(7),进货时间,120)) m
full join
(select 名称 , convert(varchar(7),销售时间,120) 月份 , sum(价格) pr from b group by 名称 , convert(varchar(7),销售时间,120)) n
on m.名称 = n.名称 and m.月份 = n.月份
insert into A values('糖', '2008-10-1' , 12 )
insert into A values('糖', '2008-10-10', 12.5)
insert into A values('油', '2008-11-1' , 8)
create table B(名称 varchar(10) , 销售时间 datetime, 价格 decimal(18,1))
insert into B values('油', '2008-11-11' , 8.5 )
insert into B values('糖', '2008-11-10' , 15 )
insert into B values('糖', '2008-11-15' , 15.5)
goselect isnull(m.名称,n.名称) 名称 , isnull(m.月份,n.月份) 月份 , isnull(m.pr , 0) 进货金额 , isnull(n.pr , 0) 销售金额 from
(select 名称 , convert(varchar(7),进货时间,120) 月份 , sum(价格) pr from a group by 名称 , convert(varchar(7),进货时间,120)) m
full join
(select 名称 , convert(varchar(7),销售时间,120) 月份 , sum(价格) pr from b group by 名称 , convert(varchar(7),销售时间,120)) n
on m.名称 = n.名称 and m.月份 = n.月份drop table A, B
/*
名称 月份 进货金额 销售金额
---------- ------- ---------------------------------------- ----------------------------------------
糖 2008-10 24.5 .0
糖 2008-11 .0 30.5
油 2008-11 8.0 8.5(所影响的行数为 3 行)*/
select 名称 , convert(varchar(7),时间,120) 月份 , sum(进货价格) 进货价格 , sum(销售价格) 销售价格 from a group by 名称 , convert(varchar(7),时间,120)
insert into A values('糖', '2008-10-1' , 12 , '进货')
insert into A values('糖', '2008-10-10', 12.5, '进货')
insert into A values('油', '2008-11-1' , 8 , '进货')
insert into A values('油', '2008-11-11' , 8.5 ,'销售' )
insert into A values('糖', '2008-11-10' , 15 ,'销售' )
insert into A values('糖', '2008-11-15' , 15.5,'销售' )
goselect 名称 , convert(varchar(7),时间,120) 月份 ,
sum(case type when '进货' then 价格 else 0 end ) 进货价格,
sum(case type when '销售' then 价格 else 0 end ) 销售价格
from a group by 名称 , convert(varchar(7),时间,120)drop table A/*
名称 月份 进货价格 销售价格
---------- ------- ---------------------------------------- ----------------------------------------
糖 2008-10 24.5 .0
糖 2008-11 .0 30.5
油 2008-11 8.0 8.5(所影响的行数为 3 行)
*/
go
create table A(名称 varchar(10) , 进货时间 datetime, 价格 decimal(18,1))
insert into A values('糖', '2008-10-1' , 12 )
insert into A values('糖', '2008-10-10', 12.5)
insert into A values('油', '2008-11-1' , 8)
create table B(名称 varchar(10) , 销售时间 datetime, 价格 decimal(18,1))
insert into B values('油', '2008-11-11' , 8.5 )
insert into B values('糖', '2008-11-10' , 15 )
insert into B values('糖', '2008-11-15' , 15.5)
go
select isnull(m.名称,n.名称) 名称 , isnull(m.月份,n.月份) 月份 , isnull(m.pr , 0) 进货金额 , isnull(n.pr , 0) 销售金额 from
(select 名称 , datepart(mm,进货时间) 月份 , sum(价格) pr from a group by 名称 , datepart(mm,进货时间)) m
full join
(select 名称 , datepart(mm,销售时间) 月份 , sum(价格) pr from b group by 名称 , datepart(mm,销售时间)) n
on m.名称 = n.名称 and m.月份 = n.月份