mysql - 将两个 SQL 查询的值相加以创建第三个值

标签 mysql sql

我的第一篇文章就在这里,一直在做一些基本的 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/

相关文章:

sql统计io扫描计数说明

javascript - Node.js API 与 express 和 mysql - 仅在设置、等于和类似组合时应用搜索参数

mysql - AWS Linux - 用于编辑数据包大小的 MySQL cnf 文件在哪里?

php - MySQL:如何仅使用一个查询获取表中不存在 ID 的百分比

带有 MySQL 数据库的 Python 网络爬虫

针对不同键的 mySQL 查询

php - 单击按钮时插入数据库

PHP验证注册用户

mysql - 数据库设计存储旧版本 mysql

sql - 对于 char/varchar/text 列,为什么该列的索引可以加快搜索速度?