我的第一篇帖子就是这样,一直在做一些基本的SQL,但由于更多的责任需要学习更多。
下面的查询1给出了我们财务系统中所有代码的年初至今价值,这些代码从目标AAAAA到ZZZZZ和主观0000到9999,并非所有代码都在使用中,目前这是在第28周15。
下面的查询2给出了本周输入的期刊(在三个期刊表中)的总值(29),它们有一个名为jnl_processed的字段,可以使用AND AND JNL_PROCESSED =' N& #39;,根据相关的客观和主观代码,将未处理的期刊的价值相加,与表1相比,此表中的代码数量要少得多。
我期待着年底,一个有价值的问题是查看此实例周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之外,列是相同的,JA,JC和JD是每个表格。
这是当前数据于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列为零,我需要包含所有代码。
答案 0 :(得分:0)
你有两个非常好的查询。现在你需要像使用表一样使用它们 - 将它们视为虚拟表 - 并将它们连接在一起。
这样的事情可以解决问题。
SELECT query1.OBJ_FULL, query1.SUBJ_FULL,
query1.ACT_YTD_TY, query2.VALUE,
(query1.ACT_YTD_TY + query2.VALUE) AS TOTAL
FROM (
/* your first query */
) query1
JOIN (
/* your second query */
) query2 ON query1.OBJ_FULL = query2.JNL_OBJ
AND query1.SUBJ_FULL = query2.JNL_SUBJ
这就是将两个结果集层叠在一起的技巧。
答案 1 :(得分:0)
尝试......
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中复制这些脚本所需的脚本将花费比我目前更多的时间。如果您已经或可以自己构建此类脚本并且您可以发布它,并且这样做,那么我将能够测试我的答案并搜索可能存在的任何错误。