我现有一表名为: product1,字段内容如下:
productID  productName price num
101          商品1     2.15   2
112          商品2     5.5    5
203          商品3     4.15   8
101          商品1     2.15   5一个表为product2,字段内容如下:
code         name    fyprice  fynum  
110          物品1     5       2
123          物品2     4       5
241          物品3     8       8
110          物品1     5       5我现在要求在报表中显示打印为
产品号  产品名   单价    数量     小计
101     商品1    2.15    7         15.05
112     商品2    5.5     5         27.5
203     商品3    4.15    8         33.2
110     物品1     5      7         35
123     物品2     4      5         20
241     物品3     8      8         64
意思也就是,希望用了UNION进行合并后记录排序能做到product1的记录在一起并按productID 排序,然后是product2的记录在一起,并按code排序。
目前我用UNION连接起来是同意按产品号排序的。结果类似于
产品号 ...
101    ...
110    ...
112    ...
123    ...
203    ...
241    ...
请问如何实现我的要求并在报表中显示并打印呀。
解决后结帖。
谢谢!

解决方案 »

  1.   

    SELECT *
    FROM (SELECT productID AS 产品号, productName AS 产品名, price AS 单价, SUM(num) AS 数量, price * SUM(num) AS 小计
            FROM product1
            GROUP BY productID, productName, price
            UNION
            SELECT code AS 产品号, name AS 产品名, fyprice AS 单价, SUM(fynum) AS 数量, fyprice * SUM(fynum) AS 小计
            FROM product2
            GROUP BY code, name, fyprice)
    ORDER BY 产品号
      

  2.   

    SELECT productID AS 产品号, productName AS 产品名, price AS 单价, SUM(num) AS 数量, price * SUM(num) AS 小计
            FROM product1
            GROUP BY productID, productName, price
            UNION
            SELECT code AS 产品号, name AS 产品名, fyprice AS 单价, SUM(fynum) AS 数量, fyprice * SUM(fynum) AS 小计
            FROM product2
            GROUP BY code, name, fyprice
    可以显示数据,但是是我上面说的不是我需要的排序。但是按你上面的那种,不行编译,提示 ORDER 附近有错误
      

  3.   

    dulei115() 您好,我刚这样试了,没问题没有语法错误,但是结果不行的。
    SELECT *
    FROM (SELECT productID AS 产品号, productName AS 产品名, price AS 单价, SUM(num) AS 数量, price * SUM(num) AS 小计
            FROM product1
            GROUP BY productID, productName, price
            UNION
            SELECT code AS 产品号, name AS 产品名, fyprice AS 单价, SUM(fynum) AS 数量, fyprice * SUM(fynum) AS 小计
            FROM product2
            GROUP BY code, name, fyprice) table_tmp
    ORDER BY 产品号
    他的结果将是
    产品号 ...
    101    ...
    110    ...
    112    ...
    123    ...
    203    ...
    241    ...而非
    产品号  产品名   单价    数量     小计
    101     商品1    2.15    7         15.05
    112     商品2    5.5     5         27.5
    203     商品3    4.15    8         33.2
    110     物品1     5      7         35
    123     物品2     4      5         20
    241     物品3     8      8         64
      

  4.   

    SELECT 0, productID AS 产品号, productName AS 产品名, price AS 单价, SUM(num) AS 数量, 
          price * SUM(num) AS 小计
    FROM product1
    GROUP BY productID, productName, price
    UNION
    SELECT 1, code AS 产品号, name AS 产品名, fyprice AS 单价, SUM(fynum) AS 数量, 
          fyprice * SUM(fynum) AS 小计
    FROM product2
    GROUP BY code, name, fyprice
    ////////////////////////////////////
    人为的加一个字段,前一个表的值衡为0,后一个表的值衡为1,SQL会自动的把两个表分开排序,你在DBGrid中不显示新加的字段,或者打印时不打印就行了。