日期:2014-05-17  浏览次数:20453 次

关于sum的一些问题
各位大侠,我刚接触数据库没多久,只是菜鸟级别的,最近在做数据库的时候遇到了问题,希望各位大侠帮我解决一下。

具体问题如下:现有这样的数据表
CLIENT_NAME   ITEM_CODE   QTY   AMT
AAAA           S           1     10
BBBB           C           2     30
CCCC           M           1     10
               S           1     40
               C           1     50

要把上表变成下面的这种形式。

CLIENT_NAME   ITEM_CODE   QTY   AMT
AAAA           S           1     10
总计                       1     10
BBBB           C           2     30
总计                       2     30
CCCC           M           1     10
               S           1     40
               C           1     50
总计                       3     100

对每个client_name 下的,qty, amt 求和,然后在每一个client_name最后一行显示出来。

希望各位大侠 多指教啊!



------解决方案--------------------
使用union 操作符 ,
UNION 操作符用于合并两个或多个 SELECT 语句的结果集,
  但UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 

------解决方案--------------------
没有看明白你写的,好像是算个小计吧。 不过如果一步实现不了,可以采用临时表的方式。
------解决方案--------------------


DECLARE @tb table
(
  client_name varchar(10),
  item_code varchar(10),
  qty int,
  amt int
);

INSERT INTO @tb
  SELECT 'AAAA','S',1,10
  UNION
  SELECT 'BBBB','C',2,30
  UNION
  SELECT 'CCCC','M',1,10
  UNION
  SELECT 'CCCC','S',1,40
  UNION
  SELECT 'CCCC','C',1,50
  
;WITH c1 AS
(
SELECT t.client_name, 
ISNULL(t