本帖最后由 ice9ying 于 2011-06-22 16:08:05 编辑

解决方案 »

  1.   

    最后的表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
     
    平均达标率我没算,所以最后一列是空着的
      

  2.   

    你的这个表C的含义都不清楚的。。
    数学语文这些subject的的现有数量怎么得到没有描述。。
      

  3.   


    --只要说你的需求,和想实现的结果
    --数据需求像下面一样列举出来 ,给出你想要的结果,大家帮你实现过程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
      

  4.   

    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这个效果
      

  5.   

    subject 是科目
    code   是不同种类,他们分属于不同的科目标准数量:   可以想成是科目下的编号下的书本数量
    比如说,科目是语文,语文这个科目下,有编号为1的散文书籍 必须有5本,和编号为2的诗歌书籍 必须有6本
    然后计算语文这个科目下一共有多少书,即11本======这就是表B现有数量:现在我有多少书,假如说我有散文书5本,但没有诗歌书最后一列:相当于还差多少种类的书没有,语文这个科目下,我没有诗歌这个种类的书籍,所以是1
    最后我想获得,现在我还没有多少书科目   标准数量   现有数量   仍需数量   仍需种类数量
    语文     11         5        6           1
      

  6.   

    DECLARE @t4 TABLE(科目  varchar(20) ,标准数量 int,现有数量 INT,仍需数量 int,仍需种类数量 int)
    INSERT INTO  @t4
    SELECT '语文',11,5,6,1
    select * from @t4
      

  7.   

    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
    --仍需种类数量和平均达标率,不懂意思