两表合并sql求助。

bomp 2017-08-23 02:00:05
有表如下:
收入表(A)
日期 数量
2017.1.1 2
2017.1.2 3
2017.1.3 4
2017.1.4 1
2017.2.2 10
2017.2.3 15
2017.2.4 20
2017.2.5 2
2017.2.6 5
支出表(B)
日期 数量
2017.1.11 2
2017.1.2 12
2017.1.3 4
2017.1.4 1
2017.2.2 10
2017.2.3 15
2017.2.4 20
2017.2.5 2
2017.2.16 11
生成收支明细表如下:
收入日期 收入数量 支出数量 收入日期
2017.1.1 2 12 2017.1.2
2017.1.2 3 4 2017.1.3
2017.1.3 4 1 2017.1.4
2017.1.4 1 2 2017.1.11
小计 10 19
2017.2.2 10 10 2017.2.2
2017.2.3 15 15 2017.2.3
2017.2.4 20 20 2017.2.4
2017.2.5 2 2 2017.2.5
2017.2.6 5 11 2017.2.16
小计 52 58
我用select不知怎么做?
有可能收入和支出的时间也有多有少,不一定都是对齐的,比如,收入在一个月内是5天,而支出是20天。
我的问题其实是二个表的合并和统计,即将收入明细表和支出明细表合并成一个并,并且要表示出收入的时间,数量,客户(我的表中没体现),还有就是支出的时间,数量,客户(我的表中没体现),并且每月小计一次。
合并以后的表格最好是这样的结构:

收入日期 数量 客户 支出日期 数量 客户
请教各位高手。
...全文
248 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bomp 2017-08-28
  • 打赏
  • 举报
回复
引用 3 楼 u012066228 的回复:
SELECT '一月收入',a.*
FROM a
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '合计','',SUM(num)
FROM a
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '一月支出',b.*
FROM b
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '合计','',SUM(num)
FROM b
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '二月支出',A.*
FROM A
WHERE SUBSTRING(DATE,6,2)='02'
UNION ALL
SELECT '合计','',SUM(num)
FROM a
WHERE SUBSTRING(DATE,6,2)='02'
UNION ALL
SELECT '二月支出',b.*
FROM b
WHERE SUBSTRING(DATE,6,2)='02'
UNION ALL
SELECT '合计','',SUM(num)
FROM b
WHERE SUBSTRING(DATE,6,2)='02'
这样不知道符合要求吗?横向拼接真心不知道怎么做
我需要的就是横向显示收入和支出,这样和帐本的习惯是一致了。
fengyewl 2017-08-25
  • 打赏
  • 举报
回复
SUM合计
糖炒唐朝栗子 2017-08-25
  • 打赏
  • 举报
回复
SELECT '一月收入',a.*
FROM a
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '合计','',SUM(num)
FROM a
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '一月支出',b.*
FROM b
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '合计','',SUM(num)
FROM b
WHERE SUBSTRING(DATE,6,2)='01'
UNION ALL
SELECT '二月支出',A.*
FROM A
WHERE SUBSTRING(DATE,6,2)='02'
UNION ALL
SELECT '合计','',SUM(num)
FROM a
WHERE SUBSTRING(DATE,6,2)='02'
UNION ALL
SELECT '二月支出',b.*
FROM b
WHERE SUBSTRING(DATE,6,2)='02'
UNION ALL
SELECT '合计','',SUM(num)
FROM b
WHERE SUBSTRING(DATE,6,2)='02'


这样不知道符合要求吗?横向拼接真心不知道怎么做
bomp 2017-08-24
  • 打赏
  • 举报
回复
麻烦高手了!

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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