有如下两个表
表一:Make(生产表)
D              N       Q          (D:生产日期,N:编号,Q:质量(合格或不合格))
2000-01-01    001     False
2000-01-02    002     True
2001-01-01    003     True
....................表二:Repair(维修表)
D              N       B          (D:生产日期,N:编号,B:可修复性)
2000-01-30    001     False
2001-02-01    003     True
    
求一条查询语句,查询结果为下统计表:
Y      MC      RC         (Y:年份,MC:年生产总量,RC:年维修总量)
2000   ...     ...

解决方案 »

  1.   

    select year(m.D),sum(m.N),sum(r.N) from Make m left join Repair r on year(m.D)=year(r.D) group by year(m.D)
      

  2.   

    生产表中的N 代表不同的产品吗?
    只统计合格的吗?
    你这个给的 说明太少了
     此消息通过 【CSDN论坛 Winform测试版】 回复!有关此工具
      

  3.   


    统计表中所有数据,年生产量和维修量N是编号,你可以认为他是ISBN条形码,我写过一个查询语句,不过我认为我写的好像不太好,毕竟自己不熟悉,下面给出
    select A.Y,A.MC,B.RC from (select year(MakeTime)as Y,count(*)as MC from MakeRecord group by year(MakeTime)) A,(select year(StartTime)as Y,count(*)as RC from RepairRecord group by year(StartTime)) B where A.Y=B.Y
      

  4.   

    select  convert(varchar(4),[t1.MakeTime],120) as Y,
               count(t1.N) as MC ,
               count(t2.N) as RC 
          from MakeRecord t1, RepairRecord t2
          where convert(varchar(4),[t1.MakeTime],120) = convert(varchar(4),[t2.StartTime],120)
          group by  convert(varchar(4),[t1.MakeTime],120) 
          order by Y desc;
      

  5.   

    CREATE TABLE Make(D VARCHAR(20), N VARCHAR(10), Q VARCHAR(10))
    CREATE TABLE Repair(D VARCHAR(20), N VARCHAR(10), B VARCHAR(10))
    INSERT dbo.Make
    SELECT '2000-01-01', '001', 'False' UNION ALL
    SELECT '2000-01-02', '002', 'True' UNION ALL 
    SELECT '2001-01-01', '003', 'True';
    INSERT dbo.Repair
    SELECT '2000-01-30', '001', 'False' UNION ALL
    SELECT '2001-02-01', '003', 'True';
    SELECT a.*,b.RC FROM
    (SELECT YEAR(D) AS [D],COUNT(N) AS [MC] FROM dbo.Make GROUP BY YEAR(D))a
     LEFT JOIN 
    (SELECT YEAR(D) AS [D],COUNT(N) AS [RC] FROM dbo.Repair GROUP BY YEAR(D))b 
     ON a.D = b.D
     
     DROP TABLE dbo.Make,dbo.Repair
    /*
    D           MC          RC
    ----------- ----------- -----------
    2000        2           1
    2001        1           1(2 個資料列受到影響)*/