请问下各位大神,这个SQL该怎么写?

csdn987q 2017-10-06 09:18:30
有三张表如下,我的SQL该怎么写才能查询到二楼的结果

...全文
1886 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sixgj 2020-07-19
  • 打赏
  • 举报
回复
两年前的贴子还没有关闭? 问题是二楼在哪儿?
qqq112 2020-06-30
  • 打赏
  • 举报
回复
三年前的帖子了,
dreamzhjX 2020-06-08
  • 打赏
  • 举报
回复

SELECT a.日期,
ISNULL (b.sCLF,0) AS CLF2,
ISNULL (c.sJXF,0) AS JXF2,
ISNULL (d.sRGF,0) AS RGF2
FROM(
	SELECT 日期 FROM tbl_CLF UNION 
	SELECT 日期 FROM tbl_JXF UNION 
	SELECT 日期 FROM tbl_RGF
)a 
LEFT JOIN (
	SELECT 日期,SUM (材料费) AS sCLF FROM tbl_CLF GROUP BY 日期
)b ON a.日期=b.日期
LEFT JOIN (
	SELECT 日期,SUM (机械费) AS sJXF FROM tbl_JXF GROUP BY 日期
)c ON a.日期=c.日期
LEFT JOIN (
	SELECT 日期,SUM (人工费) AS sRGF FROM tbl_RGF GROUP BY 日期
)d ON a.日期=d.日期
ORDER BY a.日期
  • 打赏
  • 举报
回复
SELECT dbo.a.日期, dbo.a.材料费, dbo.b.机械费, dbo.c.人工费 FROM dbo.a INNER JOIN dbo.b ON dbo.a.日期 = dbo.b.日期 INNER JOIN dbo.c ON dbo.a.日期 = dbo.c.日期
xrbaa 2020-05-08
  • 打赏
  • 举报
回复
两年前的贴子还没有关闭? 问题是二楼在哪儿?
智汇探长 2020-04-26
  • 打赏
  • 举报
回复
两表连接,即可查出
whb00120012 2020-04-10
  • 打赏
  • 举报
回复
create view t5 as select a.日期,nvl(a.材料费,0) c1,nvl(b.机械费) c2 from t1 a full join t2 b on a.日期=b.日期;
create view t6 as select a.日期,a.c1,a.c2 ,nvl(b.人工费) c3 from t5 a full join t3 b on a.日期=b.日期;

select 日期,sum(c1)+sum(c2)+sum(c3) t7 from t6 group by 日期 ;

sixgj 2018-04-22
  • 打赏
  • 举报
回复
以日期为索引主细表组合就好。
kenlewis 2017-10-25
  • 打赏
  • 举报
回复
楼主想实现的效果是不是这样?


因为你原来没有列出字段名,姑且认为是两个字段ADate和Afee吧,至于材料费、人工费等等,我认为应该是类别,定义字段为AType
那么查询的第一个表就应该是
SELECT ADate, AFee FROM Table1 WHERE AType='材料费';
SELECT ADate, AFee FROM Table1 WHERE AType='机械费';
SELECT ADate, AFee FROM Table1 WHERE AType='人工费';


那么在这个基础之上想实现第二个表的结果,就得组合了。
SELECT ADate, SUM(AFee1) AS 材料费, SUM(AFee2) AS 机械费, SUM(AFee3) AS 人工费 FROM
(
SELECT ADate, AFee AS AFee1, 0 AS AFee2, 0 AS AFee3 FROM Table1 WHERE AType='材料费'
UNION ALL
SELECT ADate, 0 AS AFee1, AFee AS AFee2, 0 AS AFee3 FROM Table1 WHERE AType='机械费'
UNION ALL
SELECT ADate, 0 AS AFee1, 0 AS AFee2, AFee AS AFee3 FROM Table1 WHERE AType='人工费'
) A
GROUP BY ADate
whb00120012 2017-10-25
  • 打赏
  • 举报
回复
case I of 1: field1:= '材料费'; 2: field1 :='机械费; 3: field1 :='人工费'; end; sql1.text :='select 日期,'+ field1 + ''' from table1 '; sql1.open;
kenlewis 2017-10-12
  • 打赏
  • 举报
回复
二楼在哪儿?
lyhoo163 2017-10-07
  • 打赏
  • 举报
回复
要什么表?没有说明
lyhoo163 2017-10-06
  • 打赏
  • 举报
回复

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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