Sql语句,分组统计多表联查,需要加时间段查询

wacy9421 2014-10-23 03:41:56
表1
lqr sl rq
张三 200 2014-10-19
李四 100 2014-10-21
张三 50 2014-10-22
李四 20 2014-10-22

表2
lqr sl rq
张三 200 2014-10-19
李四 100 2014-10-21

想要的效果

lqr kc lq
张三 200 250
李四 100 120

在线等...万分感谢

select a.lqr,
(select sum(sl) from t2 where a.lqr = t2.lqr) kc,
(select sum(sl) from t1 where a.lqr = t1.lqr) lq
from
(
select lqr
from t1
union
select lqr
from t2
) a

可以实现 但是没有时间段
SELECT lyqy,
(SELECT SUM(sl)
FROM tb_hgz
WHERE a.lyqy = tb_hgz.lyqy) AS kc,
(SELECT SUM(sl)
FROM tb_hgzjl
WHERE a.lyqy = tb_hgzjl.lyqy) AS lq
FROM (SELECT lyqy, lyrq
FROM tb_hgzjl
UNION
SELECT lyqy, lyrq
FROM tb_hgz) a
的话 效果就成
lqr kc lq
张三 200 250
张三 200 250
​李四 100 120
另外
SELECT a.lqr, SUM(b.sl) AS kc, SUM(a.sl) AS lqs,
FROM t1 a INNER JOIN
t2 b ON a.lqr = b.lqr
GROUP BY a.lqr
这样 为什么出来的kc会是400
求大神!
...全文
321 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wacy9421 2014-10-23
  • 打赏
  • 举报
回复
12楼正解 非常感谢
wacy9421 2014-10-23
  • 打赏
  • 举报
回复
这样的话就会多余一条数据
还在加载中灬 2014-10-23
  • 打赏
  • 举报
回复
应该可以这样
SELECT A.lqr,A.kc,B.lq FROM
	(SELECT lqr,SUM(sl)kc FROM T1 WHERE 日期条件 GROUP BY lqr)A
	JOIN(SELECT lqr,SUM(sl)lq FROM T2 WHERE 日期条件 GROUP BY lqr)B ON A.lqr=B.lqr
wacy9421 2014-10-23
  • 打赏
  • 举报
回复
粘错了 应该是select a.lqr, (select sum(sl) from t2 where a.lqr = t2.lqr) kc, (select sum(sl) from t1 where a.lqr = t1.lqr) lq from ( select lqr,lyrq from t1 union select lqr,lyrq from t2 ) a
wacy9421 2014-10-23
  • 打赏
  • 举报
回复
8楼 为什么会出现2个 可库里面就只有一个呀
wacy9421 2014-10-23
  • 打赏
  • 举报
回复
时间段就是lyrq 比方说 我要查询2014-10-21到2014-10-22 想要的效果就是 lqr kc lq 张三 50 120 李四 0 100
Mr_Nice 2014-10-23
  • 打赏
  • 举报
回复
至于上面那个是啥问题没看到 tb_hgzjl 表,不知道什么情况哦。
SELECT a.lqr, b.sl AS kc, a.sl AS lqs
FROM [表1] a INNER JOIN
     [表2] b ON a.lqr = b.lqr

/* t1 中有两个张三 ,所以匹配到t2就有两个值,都是200,sum就是400
lqr	kc	lqs
张三	200	200
李四	100	100
张三	200	50
李四	100	20*/
wacy9421 2014-10-23
  • 打赏
  • 举报
回复
确切地说就是2表求和 表1的sl分组求和存一个字段,表2的sl分组求和存一个字段,随后我可以根据时间段进行查询 一段时间各表的综合是多少
Tiger_Zhao 2014-10-23
  • 打赏
  • 举报
回复
你“想要的效果”没有时间段!!!
不理解需求
reenjie 2014-10-23
  • 打赏
  • 举报
回复
不知道你所說的時間段在那裡? 感覺只用表1就可以把效果的數據查出來。
还在加载中灬 2014-10-23
  • 打赏
  • 举报
回复
其实你说明,你的元数据是什么样的 想要查成什么样子的数据就可以了
wacy9421 2014-10-23
  • 打赏
  • 举报
回复
where lyrq是代表哪个表的 会不会2张表都影响
--小F-- 2014-10-23
  • 打赏
  • 举报
回复
什么加时间段查询???
發糞塗牆 2014-10-23
  • 打赏
  • 举报
回复
你在union内部加where不行?

27,580

社区成员

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

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