各位大侠,我刚接触数据库没多久,只是菜鸟级别的,最近在做数据库的时候遇到了问题,希望各位大侠帮我解决一下。
具体问题如下:现有这样的数据表
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.item_code,'总计') item_code,