SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药品编号
 UNION
SELECT 药编号 ,sum(数量) FROM 药品销售吧GROUP BY 中的'药编号'改成'药品编号'

解决方案 »

  1.   

    上下列名要统一SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药编号 UNION
    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售你这功能可以用compute实现
      

  2.   

    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药品编号
     UNION
    SELECT 药编号 ,sum(数量) FROM 药品销售 GROUP BY 药编号
      

  3.   

    1、如果药编号字段是字符型
    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药编号 UNION
    SELECT '合计' as 药编号 ,sum(数量) FROM 药品销售2、如果药编号字段是数字型(-1表示合计)
    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药编号 UNION
    SELECT -1 as 药编号 ,sum(数量) FROM 药品销售3、其他类型也类似处理
      

  4.   

    原因:
    SELECT 药编号 ,sum(数量) FROM 药品销售 
    是错误的,因为药编号没有使用聚合函数,而且没有包括在group by 里
    你的应用应该用ROLLUP实现比较合理,以下是联机帮助的一个例子:例如,简单表 Inventory 中包含:Item                 Color                Quantity                   
    -------------------- -------------------- -------------------------- 
    Table                Blue                 124                        
    Table                Red                  223                        
    Chair                Blue                 101                        
    Chair                Red                  210                        下列查询将生成小计报表:SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
                ELSE ISNULL(Item, 'UNKNOWN')
           END AS Item,
           CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
                ELSE ISNULL(Color, 'UNKNOWN')
           END AS Color,
           SUM(Quantity) AS QtySum
    FROM Inventory
    GROUP BY Item, Color WITH ROLLUPItem                 Color                QtySum                     
    -------------------- -------------------- -------------------------- 
    Chair                Blue                 101.00                     
    Chair                Red                  210.00                     
    Chair                ALL                  311.00                     
    Table                Blue                 124.00                     
    Table                Red                  223.00                     
    Table                ALL                  347.00                     
    ALL                  ALL                  658.00                     (7 row(s) affected)如果查询中的 ROLLUP 关键字更改为 CUBE,那么 CUBE 结果集与上述结果相同,只是在结果集的末尾还会返回下列两行:ALL                  Blue                 225.00                     
    ALL                  Red                  433.00                     你可以改成:
    1、如果药编号字段是字符型
    SELECT CASE WHEN (GROUPING(药编号) = 1) THEN 'ALL'
                ELSE ISNULL(药编号, 'UNKNOWN')
           END AS 药品编号,
           SUM(数量) AS 销售数量
    FROM 药品销售
    GROUP BY 药编号 WITH ROLLUP2、如果药编号字段是数字型(-1表示合计)
    SELECT CASE WHEN (GROUPING(药编号) = 1) THEN -1
                ELSE ISNULL(药编号, 0)
           END AS 药品编号,
           SUM(数量) AS 销售数量
    FROM 药品销售
    GROUP BY 药编号 WITH ROLLUP
      

  5.   

    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药品编号
     UNION
    SELECT 药编号 ,sum(数量) FROM 药品销售 GROUP BY 药编号
      

  6.   

    --建议这样写: 1.一次查询,更有效率,2.可以解决显示顺序的问题SELECT case when grouping(药编号)=1 then '药品总数量' else cast(药编号 as varchar) end as 药品编号
    ,sum(数量) as 销售数量 
    FROM 药品销售 
    GROUP BY 药编号 with rollup
      

  7.   

    现在我的问题不是不会写,是不知道为什么这么写。只好把问题重复一遍了。
    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药编号 UNION
    SELECT '药品总数量' ,sum(数量) FROM 药品销售这样是可以的,最后得到的药品总数量。

    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药编号 UNION
    SELECT 药编号 ,sum(数量) FROM 药品销售这样的就不可以。
    但是为什么不可以呢?我的列表里是有药编号这个字段名的呀。难道他是重新生成了一个表了吗?
      

  8.   

    TO:capcom(努力工作ing) ,txlicenhe(马可) 
    在GROUP里没有药品编号的,只有药编号,所以
    就会有如下提示错误。
    服务器: 消息 8118,级别 16,状态 1,行 1
    列 '药品销售.药编号' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。PS:有可能是我没有把问题说清楚。
    我是不知道为什么这样写,药编号在列表里有的,但为什么显示错误呢?
      

  9.   

    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药编号 UNION
    SELECT 药编号 ,sum(数量) FROM 药品销售如果这样的话,也得有GROUP BY,因为"药编号"是表药品销售里的字段啊.
      

  10.   

    回楼上的,首先谢谢您的回答!药编号是药品销售里的字段。
    象这样就是可以的。
    SELECT 药编号  FROM 药品销售 
    同样的,我那个为什么就不可以啊?
    还有象这样。
    SELECT 药编号 as 药品编号,sum(数量) as 销售数量 FROM 药品销售 GROUP BY 药编号 UNION
    SELECT '药品总数量' ,sum(数量) FROM 药品销售就是说里面的GROUP BY肯定影响到了后一个SELECT语句的。
    那不就是说有GROUP BY语句了吗?
      

  11.   

    谢谢,知道了。
    应该怪有个sum(数量存在),因为如果光光一个药编号是没有错。但是应该是数量。而不是sum(数量).