我的第一篇文章就在这里,一直在做一些基本的 SQL,但由于责任更多,不得不学习更多。
下面的查询 1 给出了我们财务系统中所有代码的年初至今值,这些代码从 Objective AAAAA 到 ZZZZZ 和 Subjective 0000 到 9999,并非所有代码都在使用,目前是一年中的第 28 周15.
下面的查询 2 给出了本周输入的期刊(在三个期刊表中)的总值(value) (29),它们有一个名为 jnl_processed 的字段,可以使用 AND JNL_PROCESSED = 'N' 行进行选择,这根据相关的客观和主观代码将未处理的期刊的值(value)相加,该表与表1相比代码少了很多。
我展望年底,一个有值(value)的查询是查看此实例第 28 周中所有 Year_To_Date (YTD) 的值添加到日记帐值第 29 周以创建新列总计。
我在下面分别有两个查询,但很难将两者合并,有人可以帮忙吗?
查询 1
SELECT OBJ_FULL,SUBJ_FULL,ACT_YTD_TY
FROM DB2ADM2.TFINCATP
WHERE OBJ_FULL = 'TBBBB'
AND ACT_YTD_TY <> 0.00
产生这个:
OBJ_FULL SUBJ_FULL ACT_YTD_TY
TBBBB 3420 12,000.00
TBBBB 3473 18,453.02
TBBBB 3524 2,480.40
TBBBB 3704 585.00
TBBBB 7704 -4,142.71
TBBBB 8199 -25.00
TBBBB 9400 -168,363.10
TBBBB 9403 -457.56
TBBBB 9404 -9,666.73
TBBBB 9405 -13,098.05
查询 2
SELECT JNL_OBJ, JNL_SUBJ, SUM(JNL_VALUE)
FROM DB2ADM2.JNLFILE
WHERE JNL_PROCESSED = 'N' AND JNL_YEAR = '15'
GROUP BY JNL_OBJ, JNL_SUBJ
UNION
SELECT JNL_OBJ, JNL_SUBJ, SUM(JNL_VALUE)
FROM DB2ADM2.JNLRFILE
WHERE JNL_PROCESSED = 'N' AND JNL_YEAR = '15'
GROUP BY JNL_OBJ, JNL_SUBJ
UNION
SELECT JNL_OBJ, JNL_SUBJ, SUM(JNL_VALUE)
FROM DB2ADM2.JNLYFILE
WHERE JNL_PROCESSED = 'N' AND JNL_YEAR = '15'
GROUP BY JNL_OBJ, JNL_SUBJ
产生这个:
JNL_OBJ JNL_SUBJ VALUE
TBBBB 9404 -547.78
TBBBB 9405 -24.39
TBBCA 9404 547.78
TBBCC 9400 24.39
理想情况下应该返回结果(以四个代码为例)
OBJ SUBJ YTD VALUE TOTAL
TBBBB 3420 12,000.00 0.00 12,000.00
TBBBB 9403 -457.56 0.00 -457.56
TBBBB 9404 -9,666.73 -547.78 -10,214.51
TBBBB 9405 -13,098.05 -24.39 -13,122.44
非常感谢任何帮助,我不知道是否有更简单的方法来合并三个日志表而不是使用 UNION,除了 JNL_SOURCE 之外,列是相同的,JNL_SOURCE 是每个表的 JA、JC 和 JD .
这是 15 年 10 月 21 日 15:30 返回的当前数据
OBJ SUBJ YTD VALUE TOTAL
TBBBB 9404 -9666.73 -547.78 -10214.51
TBBBB 9405 -13098.05 -24.39 -13122.44
还有其他几个代码在 YTD 列中有一个值,但 VALUE 列为零,我需要包括所有代码。
最佳答案
尝试...
SELECT EOYQuery.OBJ_FULL AS OBJ,
EOYQuery.SUBJ_FULL AS SUBJ,
EOYQuery.ACT_YTD_TY AS YTD,
JournalsQuery.JournalsValue AS VALUE,
( EOYQuery.ACT_YTD_TY + JournalsQuery.JournalsValue ) AS TOTAL
FROM ( SELECT OBJ_FULL,
SUBJ_FULL,
ACT_YTD_TY
FROM DB2ADM2.TFINCATP
WHERE OBJ_FULL = 'TBBBB'
AND ACT_YTD_TY <> 0.00 ) EOYQuery,
( SELECT JNL_OBJ,
JNL_SUBJ,
SUM( JNL_VALUE ) AS JournalsValue
FROM DB2ADM2.JNLFILE
WHERE JNL_PROCESSED = 'N' AND
JNL_YEAR = '15'
GROUP BY JNL_OBJ,
JNL_SUBJ
UNION SELECT JNL_OBJ,
JNL_SUBJ,
SUM( JNL_VALUE ) AS JournalsValue
FROM DB2ADM2.JNLRFILE
WHERE JNL_PROCESSED = 'N' AND
JNL_YEAR = '15'
GROUP BY JNL_OBJ,
JNL_SUBJ
UNION SELECT JNL_OBJ,
JNL_SUBJ,
SUM( JNL_VALUE ) AS JournalsValue
FROM DB2ADM2.JNLYFILE
WHERE JNL_PROCESSED = 'N' AND
JNL_YEAR = '15'
GROUP BY JNL_OBJ,
JNL_SUBJ ) JournalsQuery
WHERE EOYQuery.OBJ_FULL = JournalsQuery.JNL_OBJ
AND EOYQuery.SUBJ_FULL = JournalsQuery.JNL_SUBJ;
如果这是或不是一个合适的答案,那么请随时发表相应的评论。
请注意:在不确定所引用的表的结构以及存储在这些表中的数据的代表性(模仿)样本的情况下,我无法测试我的答案。
我可以尝试从您提供的示例中推断出这些,但是构建在 MySQL 中复制这些所需的脚本将花费比我现在更多的时间。如果您拥有或可以自己构建这样的脚本,并且您可以发布并这样做,那么我将能够测试我的答案并找出可能存在的任何错误。
关于mysql - 将两个 SQL 查询的值相加以创建第三个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242156/