SQL 报表如何写

蘑菇帮 2018-04-14 06:11:59
我需要得到如下的报表格式
总表:
| 整体 | 新客(初次上门,活动上门) |
项目 | 上门量 成交量 业绩 | 上门量 成交量 业绩 |
001 |
002 |
003 |
004 |
005 |

下面这两个是已经有的表
项目表:
产品 | 项目 | ID |
短裤 | 裤子 | 001 |
长裤 | 裤子 | 001 |
凉鞋 | 鞋 | 002 |
板鞋 | 鞋 | 002 |
靴子 | 鞋 | 002 |
短袖 | 上衣 | 003 |
长袖 | 上衣 | 003 |

消费表:
顾客ID | 成交状态 | 日期 | 成交项目 | 成交价格 |
00121 | 未成交 | 20017/01/01 | 板鞋 | 0.0 |
00212 | 成交 | 2017/02/02 | 长袖 | 120 |

求教各位大神 我要如何写 才能得到我想要的报表
初学SQL 还望大师们多家指教

select 项目,COUNT(dbo.消费表.成交项目)over(partition by 项目) as 上门量
from 报表
left join dbo.类型
on 报表.项目=dbo.项目.ID
inner join dbo.消费表
on dbo.项目.产品=dbo.消费表.成交项目


我尝试了一下这个代码,得到的效果不是很理想,变成了这样

项目 | 上门量
001 | 22
001 | 22
001 | 22
001 | 22
002 | 14
002 | 14
002 | 14


...全文
1536 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
蘑菇帮 2018-04-16
  • 打赏
  • 举报
回复
谢谢提醒! 上门量就是有多少条记录 成交量是“成交状态”为“成交”的条数 业绩是“成交价格”的总和 新客是状态为“初次上门”和“活动上门”的顾客 这一列我漏打了 在这里补上 消费表: 顾客ID | 成交状态 | 日期 | 成交项目 | 成交价格 | 状态 | 00121 | 未成交 | 20017/01/01 | 板鞋 | 0.0 | 初次上门 | 00212 | 成交 | 2017/02/02 | 长袖 | 120 | 活动上门 | 00354 | 成交 | 2017/02/08 | 凉鞋 | 50 | 老客 | 00485 | 未成交 | 20017/01/01 | 板鞋 | 0.0 | 初次上门 | 00789 | 成交 | 2017/02/02 | 长裤 | 40 | 活动上门 | 00147 | 未成交 | 2017/02/08 | 短裤 | 0.0 | 老客 | 00147 | 成交 | 2017/02/08 | 长袖 | 50 | 老客 | 00147 | 成交 | 2017/02/08 | 板鞋 | 120 | 老客 | 再次感谢您的帮助!!
蘑菇帮 2018-04-16
  • 打赏
  • 举报
回复
谢谢提醒! 上门量就是有多少条记录 成交量是“成交状态”为“成交”的条数 业绩是“成交价格”的总和 新客是状态为“初次上门”和“活动上门”的顾客 这一列我漏打了 在这里补上 消费表: 顾客ID | 成交状态 | 日期 | 成交项目 | 成交价格 | 状态 | 00121 | 未成交 | 20017/01/01 | 板鞋 | 0.0 | 初次上门 | 00212 | 成交 | 2017/02/02 | 长袖 | 120 | 活动上门 | 00354 | 成交 | 2017/02/08 | 凉鞋 | 50 | 老客 | 00485 | 未成交 | 20017/01/01 | 板鞋 | 0.0 | 初次上门 | 00789 | 成交 | 2017/02/02 | 长裤 | 40 | 活动上门 | 00147 | 未成交 | 2017/02/08 | 短裤 | 0.0 | 老客 | 00147 | 成交 | 2017/02/08 | 长袖 | 50 | 老客 | 00147 | 成交 | 2017/02/08 | 板鞋 | 120 | 老客 | 再次感谢您的帮助!!
道素 2018-04-16
  • 打赏
  • 举报
回复
你给的测试数据和你要的结果有些付对不上啊, 比如上门量,成交量,业绩 这三项都是什么逻辑 另外什么样客户才算新客户
蘑菇帮 2018-04-16
  • 打赏
  • 举报
回复

运行出来了!!超级感谢!
还有两个问题想要请教:
1,怎么改才可以让没有消费记录的“项目”也显示在表中呢。显示他们的成交量,业绩是0;
2,请问a.id和b.finish这种表名A和B是系统默认的吗

谢谢您的帮助

  • 打赏
  • 举报
回复
你试试以下的代码 use tempdb go if OBJECT_ID('Product') is not null drop table product go create table product ( id varchar(10), item_name varchar(10), product_name varchar(20) ) go insert into product select '001','裤子','短裤' union all select '001','裤子','长裤' union all select '002','鞋','凉鞋' union all select '002','鞋','板鞋' union all select '002','鞋','靴子' union all select '003','上衣','短袖' union all select '004','上衣子','长袖' go if OBJECT_ID('consumer') is not null drop table consumer go create table consumer ( customerID varchar(10), finish_Status varchar(20), finish_date datetime, product_name varchar(20), total_money decimal(18,2), customer_type varchar(20) ) go insert into consumer select '00121','未成交',2017/01/01,'板鞋',0,'初次上门' union all select '00212','成交',2017/02/02,'长袖',120,'活动上门' union all select '00354','成交',2017/02/08,'凉鞋',50,'老客' union all select '00485','未成交',2017/01/01,'板鞋',0,'初次上门' union all select '00789','成交',2017/02/02,'长裤',40,'活动上门' union all select '00147','未成交',2017/02/08,'短裤',0,'老客' union all select '00147','成交',2017/02/08,'长袖',50,'老客' union all select '00148','成交',2017/02/08,'板鞋',120,'老客' union all select '00149','成交',2017/02/08,'板鞋',140,'初次上门' union all select '00143','未成交',2017/02/08,'板鞋',0,'老客' union all select '00142','未成交',2017/02/08,'板鞋',0,'活动上门' go SELECT A.id,COUNT(a.id) 上门量,SUM(CASE B.finish_Status WHEN '成交' then 1 else 0 end) 成交量, sum(ISNULL(b.total_money,0)), SUM(CASE WHEN B.customer_type='初次上门' OR B.customer_type='活动上门' then 1 else 0 end ) 上门量1, SUM(CASE WHEN (B.finish_Status= '成交' AND (B.customer_type='初次上门' OR B.customer_type='活动上门')) then 1 else 0 end ) 成交量1, SUM(CASE WHEN (B.finish_Status= '成交' AND (B.customer_type='初次上门' OR B.customer_type='活动上门')) then ISNULL(b.total_money,0) else 0 end ) 业绩1 FROM product A INNER JOIN consumer B ON A.product_name=B.product_name GROUP BY a.id

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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