广告
淘宝内部优惠券
当前位置: 开发异常方案库» Delphi » 请问下各位大神,这个SQL该怎么写?

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

开发异常方案库  收集整理于:2020-05-08 18:04:00  浏览:66次
有三张表如下,我的SQL该怎么写才能查询到二楼的结果

------网友观点--------------------

------网友观点--------------------
要什么表?没有说明

------网友观点--------------------
二楼在哪儿?

------网友观点--------------------
case I of    1:     field1:= '材料费';    2:     field1 :='机械费;    3:     field1 :='人工费';  end; sql1.text :='select   日期,'+ field1 + '''  from table1 '; sql1.open;

------网友观点--------------------
楼主想实现的效果是不是这样? 因为你原来没有列出字段名,姑且认为是两个字段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

------网友观点--------------------
以日期为索引主细表组合就好。

------网友观点--------------------
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  日期 ;

------网友观点--------------------
两表连接,即可查出

------网友观点--------------------
两年前的贴子还没有关闭? 问题是二楼在哪儿?

------网友观点--------------------

------网友观点--------------------
发布此文章仅为传递网友分享,不代表本站观点,若侵权请联系我们删除,本站将不对此承担任何责任。
软件开发 程序错误 异常 ybaby.netCopyright © 2020-2026  ybaby 版权所有  桂ICP备17004385号-2 网站地图