重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
按照你的意思,就是说今天的收入1+收入2-(支出1+支出2),然后保留大于0的,并且显示剩余的金额是多少,是这个意思吧。
创新互联是一家专业提供泽州企业网站建设,专注与成都网站建设、成都网站设计、成都h5网站建设、小程序制作等业务。10年已为泽州众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
先写sum的部分,如果直接写全的话发不上来。
sum(case when 类型字段=1 or 类型字段=2 then 金额 else 0-金额 end) as jtsr
这样当类型字段为收入时,为正数,支出时为负数,二者相加就是收入-支出
后面就是 where 限定时间 group by 绑定的用户ID字段 having jtsr0
这样就可以了,如果不是很明白,那么子查询也可以写出来
(1)把类型字段为3和4的金额变为负数
(2)根据绑定的用户ID字段求sum(金额)
(3)判断sum(金额)0,然后显示
select a.accComNo,a.accountNo,a.email1,a.email2,a.email3,a.fax,test.tpaper
from ARstatement a inner join
(select accountNo,sum(tpaper) as tpaper from ARstatement group by accountNo) test on a.accountNo=test.accountNo;
你试试
需求说明
1、我需要查询某列不重复的数据
2、并且显示不重复数据的所有项
sql语句如下
select * from data group by address;
如果是仅仅查询某列不重复数据,只需要一列
效果如下
sql语句
select DISTINCT address from data
这里有一个非常非常需要注意的地方:
SELECT DISTINCT [字段名]后面不能再跟其他的字段,否则检索出来的记录仍然会含有重复项;
错误写法:
SELECT DISTINCT [字段名] ,[其他字段名] FROM [表名] WHERE [检索条件字句]
如果我们的记录集里还需要有其他字段值 ,那怎么办呢?
实际上,我们完全可以用另一种办法来解决问题;只是需要用到子查询而已!
使用GROUP BY 分组
有一点需要注意:
使用带有GROUP BY字句的查询语句时,在SELECT列表指定的列要么是GROUP BY 指定的列,要么包含聚合组函数
所以用这样一句SQL就可以去掉重复项了:
select * from msg group by terminal_id;
这样就得到我们想要的结果集了:
出现在select语句中的select语句,称为子查询或内查询。
外部的select查询语句,称为主查询或外查询。
测试数据比较多,放在我的个人博客上了。
浏览器中打开链接:
mysql中执行里面的 javacode2018_employees库 部分的脚本。
成功创建 javacode2018_employees 库及5张表,如下:
运行最后一条结果如下:
in,any,some,all分别是子查询的关键词之一。
in :in常用于where表达式中,其作用是查询某个范围内的数据
any和some一样 : 可以与=、、=、、=、结合起来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的任何一个数据。
all :可以与=、、=、、=、结合使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的其中的所有数据。
下文中会经常用到这些关键字。
运行结果:
not in的情况下,子查询中列的值为NULL的时候,外查询的结果为空。
建议:建表是,列不允许为空。