您的位置:首页 > 其它

几道小题

2009-02-23 17:12 155 查看
论坛里的oracle面试题,估计这个算是最简单的了吧?电脑里没有oracle很久了,还是用SQL Server试试:

题目1:表B
C1 c2
2005-01-01 1
2005-01-01 3
2005-01-02 5

要求的处数据
2005-01-01 4
2005-01-02 5
合计 9
试用一个Sql语句完成。

我的答案:

CREATE TABLE [B](
[c1] [datetime] NULL,
[c2] [numeric](7, 0) NULL
) ON [PRIMARY]

GO

select convert(varchar,c1), sum(c2)
from B
group by c1
union
select 'Total', sum(c2)
from B

GO

DROP TABLE [B]

=========================================================

题目2:

create table A
(
yearTime varchar(10),
BusDeptID varchar(10),
DevDeptID varchar(10),
Amount numeric(10)
)
Go
create table C
(
BusDeptID varchar(10),
BusDeptName varchar(10)

)
Go
create table D
(
DevDeptID varchar(10),
DevDeptName varchar(10),
BusDeptID varchar(10)
)

如上3张表。C表示业务部,其下有D开发部。A为每个业务部中各开发部在某年份的营业额。现在要求写一SQL查询,结果为:年份,业务部,开发部,该年营业额,下一年营业额,以2009年,2010年为例,查找到各个业务部的经营情况。对于新的部门(没有营业信息的部门),也要显示部门名称。

查询语句为:

select Temp.yeartime, Temp.BusDeptName, Temp.DevDeptName, Temp.amount, B.amount
from (select A.yearTime, C.BusDeptID as BusDeptID, C.BusDeptName as BusDeptName, D.DevDeptID as DevDeptID, D.DevDeptName as DevDeptName, A.amount as amount
from A
right join D
on A.DevDeptID = D.DevDeptID
right Join C
on A.BusDeptID = C.BusDeptID
/*and A.yearTime = '2009'*/) as Temp
left join (select * from A where yearTime = '2010') as B
on
B.DevDeptID = Temp.DevDeptID
and B.BusDeptID = Temp.BusDeptID
where isnull(Temp.yearTime,'') != '2010'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: