自我学习第4题

报表.cpt


怎样将“是否已付”的数据转化成数字且在表格没显示这个数据列的时候用订单数量减去?

求月销量的计算方法

FineReport Ginga 发布于 2020-9-2 08:57 (编辑于 2020-9-2 11:06)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
ColdmanLv6高级互助
发布于2020-9-2 09:03(编辑于 2020-9-2 11:12)
sum(case when a.是否已付 = 'true' then 1 else 0 end) as 已付数量

4题.cpt

QQ图片20200902111220.png

  • Ginga Ginga(提问者) 解答得很完整,非常感谢。希望可以附上重点的思路以及一些要注意的地方,另外希望你能帮我看下我的图为什么只显示了一条柱形图
    2020-09-02 10:33 
  • Coldman Coldman 回复 Ginga(提问者) 思路就是是否已付为true设为1,其他的为0,然后进行求和,就是已付数量。 这题就考一个参数查询,和组合图 你的只显示一条应该是图表的数据弄错了,看我的图表数据是怎么设置的
    2020-09-02 10:37 
  • Coldman Coldman 回复 Ginga(提问者) 你的是两条柱形图,不过因为销量的数值跟订单数量的数值差太多了,你看一下我的图表的坐标轴设置
    2020-09-02 10:40 
  • Ginga Ginga(提问者) 回复 Coldman 思路我是懂的(因为确实研究了好久),下次补充下思路可以让我这种菜鸟学起来更快点。组合图数据基本上差不多,问题是悬停时会有数据显示,但就是出不来第一柱形图
    2020-09-02 10:40 
  • Coldman Coldman 回复 Ginga(提问者) 你堆积和坐标轴看我图片设置
    2020-09-02 11:12 
最佳回答
0
cherry团子Lv6中级互助
发布于2020-9-2 08:58

https://bbs.fanruan.com/wenda/question/6489.html

  • Ginga Ginga(提问者) 感谢分享,不过里面解释还是有点不全,你可以参照楼上的完善下
    2020-09-02 10:36 
  • cherry团子 cherry团子 回复 Ginga(提问者) 那您可以告诉我,我做的哪里不完善?
    2020-09-02 10:39 
  • Ginga Ginga(提问者) 回复 cherry团子 select substr(订购日期,1,7) as 日期, count(*) as 订单数量, sum(case when a.是否已付 = \'true\' then 1 else 0 end) as 已付数量, sum(数量*单价*(1-折扣)) as 销量 from 订单 a,订单明细 b where a.订单ID = b.订单ID and substr(订购日期,1,4) = \'${year}\' group by 日期 select substr(订购日期,1,4) as 年份 from 订单 group by 年份 这是楼上的SQL代码,用了两个数据库,分段这些设计会让我直观上觉得楼上的会比你的语言简洁些 而且你的后两行代码稍稍有点难懂
    2020-09-02 10:57 
  • jongwang jongwang 回复 Ginga(提问者) 其实都差不多的,语句的样式分段的主要看使用习惯;最后两行也可以另行搜索,加深了解
    2020-09-02 11:18 
最佳回答
0
Edward_DDLv5中级互助
发布于2020-9-2 09:01

sql可以用case when语句实现把是否已付转成数字

select 
    case   job_level
    when     '是否已付'     then    1
    else       '' end as xiaoliang

    from     dbo.employee

然后可以把数字放到某列单元格,再把该单元格隐藏掉,就可以不显示数字,但可以用它来计算

最佳回答
0
jongwangLv6中级互助
发布于2020-9-2 09:16(编辑于 2020-9-2 09:19)
select 
strftime('%Y-%m',a.订购日期) as 日期,
count(distinct a.订单id) 订单数量,
count(distinct case when a.是否已付 = 'true' then a.订单id else null end) 已付订单,
sum(b.数量) 销量
from 订单 a left join 订单明细 b
on a.订单id = b.订单id
where strftime('%Y',a.订购日期) = '${year}'
group by strftime('%Y-%m',订购日期)


看下是否要去重, 决定加不加distinct

  • 6关注人数
  • 704浏览人数
  • 最后回答于:2020-9-2 11:12
    请选择关闭问题的原因
    确定 取消
    返回顶部