已知 ACCESS 里有表 A1 和表A2
A1 ID       日期       产量  1      2010-1-1      1
2      2010-1-1      1
3      2010-1-1      1
4      2010-1-3      1
5      2010-1-3      1
6      2010-1-3      1
7      2010-1-4      1
8      2010-1-5      1A2 ID     明细      用量
1       1         2
1       2         1
1       1         5
2       7         4
2       8         1.9
1       3         1
1       5         2
3       1         1
3       2         1
3       5         3
4       1         1
4       2         1
4       3         2
4       6         4         
5       5         7   
5       7         2.2
5       4         3     
5       1         1
5       2         6
5       1         1  
7       2         6.7
7       3         2
7       2         1
8       1         1
8       2         3
1       4         7
7       2         3.8
7       2         3
6       1         2
现在要根据日期  求每天的明细用量和
最好的形式是日期        (自动生成1-N列)1      2      3       4        5      6     7      8     产量
2010-1-1                     8      2      1       7        5            4      1.9     3
2010-1-3                     5      7      2       3        7      4     2.2            3
2010-1-4                     1      13.5   2                                            1  
2010-1-5                     1      3                                                   1

解决方案 »

  1.   

    已知 ACCESS 里有表 A1 和表A2
    A1 ID           日期              产量  1            2010-1-1         1
    2            2010-1-1         1
    3            2010-1-1         1
    4            2010-1-3         1
    5            2010-1-3         1
    6            2010-1-3         1
    7            2010-1-4         1
    8            2010-1-5         1A2 ID         明细           用量
    1           1            2
    1           2            1
    1           1            5
    2           7            4
    2           8            1.9
    1           3            1
    1           5            2
    3           1            1
    3           2            1
    3           5            3
    4           1            1
    4           2            1
    4           3            2
    4           6            4         
    5           5            7   
    5           7            2.2
    5           4            3     
    5           1            1
    5           2            6
    5           1            1  
    7           2            6.7
    7           3            2
    7           2            1
    8           1            1
    8           2            3
    1           4            7
    7           2            3.8
    7           2            3
    6           1            2
    现在要根据日期  求每天的明细用量和
    最好的形式是日期        (自动生成1-N列)1      2      3       4        5      6     7      8     产量
    2010-1-1                     8      2      1       7        5            4      1.9     3
    2010-1-3                     5      7      2       3        7      4     2.2            3
    2010-1-4                     1      13.5   2                                            1  
    2010-1-5                     1      3                                                   1
      

  2.   

    表2的ID 就是表1的ID  表1里有日期 每天有生产量     表2里有每次生产的用料明细  求 明细的和
    比如说  2010-1-1 这天  共生产了3件货  然后  材料1 用了多少  材料2 用了多少  就是求这个
      

  3.   

    TRYSELECT A.日期
         , SUM(IIF(B.明细 = '1', B.用量, 0)) AS '1'
         , SUM(IIF(B.明细 = '2', B.用量, 0)) AS '2'
         , SUM(IIF(B.明细 = '3', B.用量, 0)) AS '3'
         , SUM(IIF(B.明细 = '4', B.用量, 0)) AS '4'
         , SUM(IIF(B.明细 = '5', B.用量, 0)) AS '5'
         , SUM(IIF(B.明细 = '6', B.用量, 0)) AS '6'
         , SUM(IIF(B.明细 = '7', B.用量, 0)) AS '7'
         , SUM(IIF(B.明细 = '8', B.用量, 0)) AS '8'
         , A.产量
      FROM A1 A
         , A2 B
     WHERE A.ID = B.ID
    GROUP BY A.日期
    ORDER BY A.日期
      

  4.   

    如果是sql server 或oracle等可以用存储过程,access没有
    但可以用vb和sql结合可以完成先查询有多少列,
    select max(明细) from A2
    获取最大列然后通过循环获取sqlstrsql = ""
    strsql = strsql & " SELECT A.日期 " & vbCrLfFor i = 1 To rs.fields(0)
        strsql = strsql & "      , SUM(IIF(B.明细 = '" & LTrim(Str(i)) & "', B.用量, 0)) AS '" & i & "' " & vbCrLf
    Next istrsql = strsql & "      , A.产量 " & vbCrLf
    strsql = strsql & "        FROM A1 A " & vbCrLf
    strsql = strsql & "           , A2 B " & vbCrLf
    strsql = strsql & "       Where a.ID = b.ID " & vbCrLf
    strsql = strsql & "      GROUP BY A.日期 " & vbCrLf
    strsql = strsql & "      ORDER BY A.日期 "
      

  5.   

    Access 有 TRANSFORM .....PIVOT  语句。
    不过实在没看懂。你举的例子 结果似乎不对.
    只用 A1表来测试,下面语句 自动生成 ID 横排,有多少ID 就有多少列,
    语法 如下: 请据此修改为你想要的。s = "TRANSFORM Sum(A1.ID)" & vbCrLf
    s = s & "SELECT A1.日期" & vbCrLf
    s = s & "FROM A1  GROUP BY A1.日期 PIVOT A1.ID"
      

  6.   

    不是用ID徘的 
    Set rs = New ADODB.Recordset
    strSql = "SELECT Requirement(解释一下:这个是用来排列的列) from MixingType(这是一个表) group by Requirement"
    rs.Open strSql, conn, adOpenKeyset, adLockOptimisticIf rs.BOF Or rs.EOF Then
    MsgBox "没有任何您需要查找的信息,请确认好查找条件后重新查找", vbInformation, "提示"
    Exit Sub
    End IfDo While Not rs.EOF
    HNTSCQKQDJS.ListView1.ColumnHeaders.Add , , rs.Fields("Requirement"), 1400
    rs.MoveNext
      

  7.   

    TRANSFORM sum(用量)
    SELECT 日期, 产量1
    FROM 
    (select a1.日期, 明细, 用量, 产量1 
    from a1, a2, (select 日期, sum(产量) as 产量1 from a1 group by 日期) a3 
    where a1.id=a2.id and a1.日期=a3.日期
    )
    GROUP BY 日期, 产量1
    PIVOT 明细
      

  8.   

    TRANSFORM sum(用量)
    SELECT 日期, 产量
    FROM 
    (select a1.日期, 明细, 用量, 产量 
    from a1, a2, (select 日期, sum(a1.产量) as 产量 from a1 group by 日期) a3 
    where a1.id=a2.id and a1.日期=a3.日期
    )
    GROUP BY 日期, 产量
    PIVOT 明细
      

  9.   

    参考利用Transform交叉表分析数据
      

  10.   


    这个sqlTRANSFORM sum(用量)
    SELECT 日期, 产量
    FROM 
    (select a1.日期, 明细, 用量, 产量 
    from a1, a2, (select 日期, sum(a1.产量) as 产量 from a1 group by 日期) a3 
    where a1.id=a2.id and a1.日期=a3.日期
    )
    GROUP BY 日期, 产量
    PIVOT 明细的结果日期 产量 1 2 3 4 5 6 7 8
    2010-01-01 3 8 2 1 7 5 4 1.89999997615814
    2010-01-03 3 4 1 2 3 7 4 2.20000004768372
    2010-01-04 1 14.4999997615814 2
    2010-01-05 1 1 3
      

  11.   

    大哥 请问结果出来后 那怎么把他读出来啊
    我的是vb LISTVIEW 控件
    特别是列 1-N 的列 而且还是数据对应 我改怎么做啊?
     
      

  12.   

    Do While Not rs.EOF
    窗口.ListView1.ColumnHeaders.Add , , rs.Fields("1-N的字段名"), 1400
    rs.MoveNext
    Loop
    窗口.ListView1.ColumnHeaders.Add (rs.RecordCount + 3), , "产量", 1400
    rs.Close
    但是数据怎么添加进去啊