日期:2014-05-18  浏览次数:20522 次

帮忙看下这个语句
select   right(客户,len(客户)-charindex( '- ',客户))as   客户,   数量,   金额
FROM
      (select   distinct   客户,null   as   数量,null   as   金额   from   表               union
select   客户+ '- '+商品+规格,sum(数量),sum(金额)   from   表   group   by   客户,商品,规格)T

表的格式是这样的:

客户     商品       规格     数量       金额       日期
张三     电脑       x32       10           100         2007-01-01
张三     电脑       x32       20           200         2007-01-03
李四     电脑       x32       10           100         2007-01-02
张三     手机                   10           200         2007-01-20

想要这样的结果:

客户           数量       金额       日期
张三                                       2007-01-20     (这里日期取同客户的最大日期)
电脑x32     30           300         2007-01-03     (这里日期取同商品同规格的最大日期)
手机           10           200         2007-01-20
李四
电脑x32     10           100         2007-01-02

但是用上面的语句运行之后没有规格的商品显示不出来.还有就是用这个语句如何取最大日期,就是要求的那样?



------解决方案--------------------
人在网吧,没有测试环境,如果没有写对请间谅

SELECT 客户,数量,金额,日期
FROM
(
SELECT 商品+规格 AS 客户,SUM(数量) AS 数量,SUM(金额) AS 金额,max(日期) AS 日期,1 as flag
FROM 表 GROUP BY 客户,商品+规格,数量
UNION ALL
SELECT 客户,null,null,max(日期),0 as flag FROM 表 GROUP BY 客户
) A ORDER BY 客户,flag
------解决方案--------------------
select 客户, 数量=NULL, 金额=NULL, 日期=max(日期)
from T
group by 客户
union all
select 商品=商品+isnull(规格, ' '), 数量=sum(数量), 金额=sum(金额), 日期=max(日期)
from T
group by 客户, 商品+isnull(规格, ' ')
------解决方案--------------------
create table T(客户 varchar(10), 商品 varchar(10), 规格 varchar(10), 数量 int, 金额 int, 日期 datetime)
insert T select '张三 ', '电脑 ', 'x32 ', 10, 100, '2007-01-01 '
union all select '张三 ', '电脑 ', 'x32 ', 20, 200, '2007-01-03 '
union all select '李四 ', '电脑 ', 'x32 ', 10, 100, '2007-01-02 '
union all select '张三 ', '手机 ', NULL, 10, 200, '2007-01-20 '

select tmp.客户, tmp.数量, tmp.金额, tmp.日期
from
(
select 客户, 数量=NULL, 金额=NULL, 日期=max(日期), sort=客户
from T
group by 客户
union all
select 商品=商品+isnull(规格, ' '), 数量=sum(数量), 金额=sum(金额), 日期=max(日期), sort=客户
from T
group by 客户, 商品+isnull(规格, ' ')
)tmp
order by tmp.sort desc, tmp.数量

--result
客户 数量 金额 日期
-------------------- ----------- ----------- -----------------