公司没有一个人会的数据库问题,急求高人指点

dymygold 2016-08-11 02:42:49
数据表如下图所示,

能不能用语句实现下列效果:
品牌 冰箱合计订单数 冰箱合计数量 冰箱合计价格 彩电合计订单数 彩电合计数量 彩电合计价格 空凋合计数量......


请老师们指点下,客户要求的报表要这个汇总功能,项目卡到这里了,万分感谢。
...全文
572 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ginnnnnnnn 2016-08-11
  • 打赏
  • 举报
回复
动态根据品牌来生成
 Select ttt.商品,
						  SUM( case when ttt.商品 = '冰箱' then ttt.订单数 else 0 end ) as [冰箱订单数],
						  SUM( case when ttt.商品 = '冰箱' then ttt.数量 else 0 end ) as [冰箱数量],
						  SUM( case when ttt.商品 = '冰箱' then ttt.总价 else 0 end ) as [冰箱总价],
						  SUM( case when ttt.商品 = '彩电' then ttt.订单数 else 0 end ) as [彩电订单数],
						  SUM( case when ttt.商品 = '彩电' then ttt.数量 else 0 end ) as [彩电数量],
						  SUM( case when ttt.商品 = '彩电' then ttt.总价 else 0 end ) as [彩电总价],
						  SUM( case when ttt.商品 = '空调' then ttt.订单数 else 0 end ) as [空调订单数],
						  SUM( case when ttt.商品 = '空调' then ttt.数量 else 0 end ) as [空调数量],
						  SUM( case when ttt.商品 = '空调' then ttt.总价 else 0 end ) as [空调总价]
						from ttt
						group by ttt.商品
qq_21990081 2016-08-11
  • 打赏
  • 举报
回复
动态写法

 DECLARE @sql NVARCHAR(MAX) ='SELECT ttt.品牌,' 
 SELECT @sql=@sql +'SUM( CASE ttt.商品 WHEN '''+ttt.商品+''' THEN ttt.订单数 END) AS '+ttt.商品+'合计订单数,' 
 +'SUM( CASE ttt.商品 WHEN '''+ttt.商品+''' THEN ttt.数量 END) AS '+ttt.商品+'合计数量,'
 +'SUM( CASE ttt.商品 WHEN '''+ttt.商品+''' THEN ttt.总价 END) AS '+ttt.商品+'合计价格,'
 FROM ttt GROUP BY ttt.商品
 
 SET @sql=@sql+'0  FROM ttt
 GROUP BY ttt.品牌'

EXEC(@sql)
PRINT @sql
qq_21990081 2016-08-11
  • 打赏
  • 举报
回复
静态写法

WITH ttt(商品,品牌 , 订单数,数量 ,总价)
AS
(
   SELECT '冰箱', '长虹', 1,3,5400
   UNION ALL
   SELECT '彩电', '长虹', 1,3,5400
   UNION ALL
   SELECT '空调', '长虹', 1,3,5400
   UNION ALL
   SELECT '冰箱', '康佳', 1,3,5400
   UNION ALL
   SELECT '彩电', '康佳', 1,3,5400
   UNION ALL
   SELECT '空调', '康佳', 1,3,5400
  )
 SELECT ttt.品牌,
   SUM( CASE ttt.商品 WHEN '冰箱' THEN ttt.订单数 END) AS 冰箱合计订单数,
   SUM( CASE ttt.商品 WHEN '冰箱' THEN ttt.数量 END) AS 冰箱合计数量,
   SUM( CASE ttt.商品 WHEN '冰箱' THEN ttt.总价 END) AS 冰箱合计价格,
   SUM( CASE ttt.商品 WHEN '彩电' THEN ttt.订单数 END) AS 彩电合计订单数,
   SUM( CASE ttt.商品 WHEN '彩电' THEN ttt.数量 END) AS 彩电合计数量,
   SUM( CASE ttt.商品 WHEN '彩电' THEN ttt.总价 END) AS 彩电合计价格,
   SUM( CASE ttt.商品 WHEN '空调' THEN ttt.订单数 END) AS 彩电合计订单数,
   SUM( CASE ttt.商品 WHEN '空调' THEN ttt.数量 END) AS 彩电合计数量,
   SUM( CASE ttt.商品 WHEN '空调' THEN ttt.总价 END) AS 彩电合计价格
 FROM ttt
 GROUP BY ttt.品牌
快溜 2016-08-11
  • 打赏
  • 举报
回复
商品不固定的话,需要动态行转列
卖水果的net 版主 2016-08-11
  • 打赏
  • 举报
回复
,sum(订单数) 改成: ,sum(case when 商品 = '空调' then 订单数 else 0 end) as "空调订单数" , 依次写 PS:加多少薪?
dymygold 2016-08-11
  • 打赏
  • 举报
回复
select 品牌,商品,sum(订单数),sum(数量),sum(总价) from 数据表 group by 品牌,商品 这个表不能达到效果,客户要求每个品牌只能显示在一行里面
快溜 2016-08-11
  • 打赏
  • 举报
回复
select 品牌,商品,sum(订单数),sum(数量),sum(总价) from 数据表 group by 品牌,商品
快溜 2016-08-11
  • 打赏
  • 举报
回复
加多少薪
dymygold 2016-08-11
  • 打赏
  • 举报
回复
就是要达到每个品牌只用一行就能显示出所有汇总信息,每列的格式都是固定的,就是计算出合计分项值,请老师们指点,老板说项目弄完可以加薪,谢谢。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧