最后的表D表subject:subjectcode subjectname ------------------------------ A 语文 B 数学 C 英语 D 物理 E 生物 表A: code 数量 subjectcode ----------------------------------- 1 5 A 2 6 A 3 7 B 4 8 C 5 9 D 6 10 D 7 11 E我通过group by 获得了表B (sql语句是: select s.subjectname 配备科目,sum(数量)标准数量 from A a,subject s where a.subjectcode=s.subjectcode group by subjectname ) B: subjectname 标准数量 ----------------------------------- 语文 11 数学 7 英语 8 物理 19 生物 11还有一张 表C:code 现有数量 --------------------------- 1 5 1 6 2 4 3 3 最后的问题是,我要如何和前面写的sql语句合并起来,获得表D表D:subjectname 标准数量 现有数量 尚需数量 尚需subject数量 平均达标率 --------------------------------------------------------------------------------- 数学 7 4 3 0 英语 8 3 5 0 物理 19 0 19 2 生物 11 0 11 1
平均达标率我没算,所以最后一列是空着的
你的这个表C的含义都不清楚的。。 数学语文这些subject的的现有数量怎么得到没有描述。。
--只要说你的需求,和想实现的结果 --数据需求像下面一样列举出来 ,给出你想要的结果,大家帮你实现过程DECLARE @t TABLE(subjectcode VARCHAR(20),subjectname VARCHAR(20) ) INSERT INTO @t SELECT 'A','语文' UNION ALL SELECT 'B','数学' UNION ALL SELECT 'C','英语' UNION ALL SELECT 'D','物理' UNION ALL SELECT 'E','生物' DECLARE @t1 TABLE(code INT ,num INT,subjectcode VARCHAR(20)) INSERT INTO @t1 SELECT 1,5,'A' UNION ALL SELECT 2,6,'A' UNION ALL SELECT 3,7,'B' UNION ALL SELECT 4,8,'C' UNION ALL SELECT 5,9,'D' UNION ALL SELECT 6,10,'D' UNION ALL SELECT 7,11,'E'DECLARE @t2 TABLE(code INT ,nownum INT) INSERT INTO @t2 SELECT 1,5 UNION ALL SELECT 1,6 UNION ALL SELECT 2,4 UNION ALL SELECT 3,3 SELECT * FROM @t SELECT * FROM @t1 SELECT * FROM @t2
DECLARE @t3 TABLE(subjectname varchar(20) ,num int,nownum INT,neednum int,needsubject int) --num标准数量 nownum现有数量 neednum 仍需数量 needsubject仍需科目数量 INSERT INTO @t3 SELECT '数学',7,4,3,0 UNION ALL SELECT '英语',8,3,5,0 UNION ALL SELECT '物理',19,0,19,2 UNION ALL SELECT '生物',11,0,11,1select * from @t3 我想获得@t3这个效果
DECLARE @t4 TABLE(科目 varchar(20) ,标准数量 int,现有数量 INT,仍需数量 int,仍需种类数量 int) INSERT INTO @t4 SELECT '语文',11,5,6,1 select * from @t4
select b.subjectname,b.标准数量,d.现有数量,(b.标准数量-d.现有数量) as 尚需数量 from ( select s.subjectname 配备科目,sum(数量)标准数量 from A a,subject s where a.subjectcode=s.subjectcode group by subjectname ) b, ( select subjectname,sum(c.现有数量) as 现有数量 from c ,a,subject where c.code=a.code and a.subjectcode=subject.subjectcode group by subjectname ) d where b.subjectname=d.subjectname --仍需种类数量和平均达标率,不懂意思
------------------------------
A 语文
B 数学
C 英语
D 物理
E 生物
表A:
code 数量 subjectcode
-----------------------------------
1 5 A
2 6 A
3 7 B
4 8 C
5 9 D
6 10 D
7 11 E我通过group by 获得了表B
(sql语句是:
select s.subjectname 配备科目,sum(数量)标准数量
from A a,subject s
where a.subjectcode=s.subjectcode
group by subjectname
)
B:
subjectname 标准数量
-----------------------------------
语文 11
数学 7
英语 8
物理 19
生物 11还有一张
表C:code 现有数量
---------------------------
1 5
1 6
2 4
3 3
最后的问题是,我要如何和前面写的sql语句合并起来,获得表D表D:subjectname 标准数量 现有数量 尚需数量 尚需subject数量 平均达标率
---------------------------------------------------------------------------------
数学 7 4 3 0
英语 8 3 5 0
物理 19 0 19 2
生物 11 0 11 1
平均达标率我没算,所以最后一列是空着的
数学语文这些subject的的现有数量怎么得到没有描述。。
--只要说你的需求,和想实现的结果
--数据需求像下面一样列举出来 ,给出你想要的结果,大家帮你实现过程DECLARE @t TABLE(subjectcode VARCHAR(20),subjectname VARCHAR(20) )
INSERT INTO @t
SELECT 'A','语文'
UNION ALL
SELECT 'B','数学'
UNION ALL
SELECT 'C','英语'
UNION ALL
SELECT 'D','物理'
UNION ALL
SELECT 'E','生物'
DECLARE @t1 TABLE(code INT ,num INT,subjectcode VARCHAR(20))
INSERT INTO @t1
SELECT 1,5,'A'
UNION ALL
SELECT 2,6,'A'
UNION ALL
SELECT 3,7,'B'
UNION ALL
SELECT 4,8,'C'
UNION ALL
SELECT 5,9,'D'
UNION ALL
SELECT 6,10,'D'
UNION ALL
SELECT 7,11,'E'DECLARE @t2 TABLE(code INT ,nownum INT)
INSERT INTO @t2
SELECT 1,5
UNION ALL
SELECT 1,6
UNION ALL
SELECT 2,4
UNION ALL
SELECT 3,3
SELECT * FROM @t
SELECT * FROM @t1
SELECT * FROM @t2
--num标准数量 nownum现有数量 neednum 仍需数量 needsubject仍需科目数量
INSERT INTO @t3
SELECT '数学',7,4,3,0
UNION ALL
SELECT '英语',8,3,5,0
UNION ALL
SELECT '物理',19,0,19,2
UNION ALL
SELECT '生物',11,0,11,1select * from @t3
我想获得@t3这个效果
code 是不同种类,他们分属于不同的科目标准数量: 可以想成是科目下的编号下的书本数量
比如说,科目是语文,语文这个科目下,有编号为1的散文书籍 必须有5本,和编号为2的诗歌书籍 必须有6本
然后计算语文这个科目下一共有多少书,即11本======这就是表B现有数量:现在我有多少书,假如说我有散文书5本,但没有诗歌书最后一列:相当于还差多少种类的书没有,语文这个科目下,我没有诗歌这个种类的书籍,所以是1
最后我想获得,现在我还没有多少书科目 标准数量 现有数量 仍需数量 仍需种类数量
语文 11 5 6 1
INSERT INTO @t4
SELECT '语文',11,5,6,1
select * from @t4
from
(
select s.subjectname 配备科目,sum(数量)标准数量
from A a,subject s
where a.subjectcode=s.subjectcode
group by subjectname
) b,
(
select subjectname,sum(c.现有数量) as 现有数量
from c ,a,subject
where c.code=a.code and a.subjectcode=subject.subjectcode
group by subjectname
) d
where b.subjectname=d.subjectname
--仍需种类数量和平均达标率,不懂意思