SQL Server经典面试题之一 朱二(2006.12 转载请注明作者)
问题说明:有三个表,项目表、合同表、付款表 一个项目可能会有签署多个合同,每个合同会分几次付款。
--下面是建立表的语句 create table 项目(项目编号 int,项目名称 varchar(50)) insert 项目 select 1, ‘项目1‘ union select 2, ‘项目2‘ union select 3, ‘项目3‘
create table 合同(合同编号 int,项目编号 int,合同金额 numeric(7,3))
insert 合同 select 1,1,1000 union select 2,1,1500 union select 3,2,2000
create table 付款(付款编号 int,合同编号 int,付款金额 numeric(7,3))
insert 付款 select 1,1,100 union select 2,2,200 union select 3,2,800
问题(一): 设计一个查询,要求返回结果如下: ---------------------------------------------------------- 项目编号 项目名称 项目所有合同的金额 ----------- ------------------------ --------------------- 1 项目1 2500 2 项目2 2000 3 项目3 NULL
问题(二): 设计一个查询,要求返回结果如下: -------------------------------------- 项目编号 项目所有合同已付款金额 ----------- -------------------------- 1 1100 2 NULL --------------------------------------
问题(三) 设计一个查询,要求返回结果如下: 项目编号 项目名称 项目所有合同已付款金额 ----------- ---------------------------------------- 1 项目1 1100 2 项目2 NULL ----------------------------------------------------
问题(四): 请您设计一个查询语句,检索的格式如下: ------------------------------------------------------------------------ 项目编号 项目名称 项目所有合同的金额 项目所有合同已付款金额 ------------------------------------------------------------------------ 1 项目1 2500.000 1100.000 2 项目2 2000.000 NULL ------------------------------------------------------------------------
考核点:问题一、二、三考核连接、分组统计的综合运用 问题四考核连接、分组统计、子查询的综合运用
|