sql - 如何将两个完全不同的 SQL 查询组合成一个结果
问题描述
我对 SQL 查询很陌生,可以使用一些帮助。
我有两个不同的 SQL 查询,我希望两者的结果都在一个结果中。
查询一:
SELECT
gbkmut.bkstnr_sub,
MAX(orkrg.refer) AS oms25,
MAX(gbkmut.docnumber) AS YourRef,
MIN(gbkmut.datum) AS datum,
cicmpy.debcode AS delv_debnr,
MAX(cicmpy.cmp_name) AS cmp_name,
MAX(gbkmut.datum) AS latest_deldat,
FROM
gbkmut
INNER JOIN
orkrg ON gbkmut.bkstnr_sub = orkrg.ordernr
INNER JOIN
cicmpy ON orkrg.verzdebnr = cicmpy.debnr
INNER JOIN
items ON gbkmut.artcode = items.itemcode AND items.type <> 'P'
INNER JOIN
magaz ON gbkmut.warehouse = magaz.magcode AND magaz.blokkeer = 0
WHERE
(gbkmut.transsubtype IN ('B','H')
AND gbkmut.freefield1 = 'V'
AND gbkmut.Blockitem = 0
AND gbkmut.afldat <= GETDATE())
AND gbkmut.Checked = 1
AND (orkrg.ordbv_afdr = 0 OR (orkrg.ordbv_afdr = 1 AND orkrg.ordbv_afgd = 1))
GROUP BY
gbkmut.bkstnr_sub,
gbkmut.afldat,
cicmpy.debcode
ORDER BY
gbkmut.bkstnr_sub DESC
查询 2:
SELECT TOP 1000
[Debtor code],
[Outstanding Amount]
FROM
[456].[dbo].[GRV_DebtorOutstanding]
[债务人代码] 和 cicmpy.debcode 对于连接是相同的
两个查询的一些示例结果:
查询 1 列:
Ordernumber, Order description, Your reference, Orderdate, Debtor code, Debtor name, Order delivery date
20093 NULL Bestel.: 20093 2018-07-31 00:00:00.000 60089 Restaurant Enkhuizen 2018-07-31 00:00:00.000
20092 NULL Bestel.: 20092 2018-07-31 00:00:00.000 60089 Restaurant Enkhuizen 2018-07-31 00:00:00.000
20088 NULL Bestel.: 20088 2018-07-05 00:00:00.000 60105 Brasserie Pigalle 2018-07-05 00:00:00.000
查询 2:
列:债务人代码、未偿还总额
Debtor code Outstanding Amount
60086 -30,65
60092 -121
60089 -5000
60130 1000
我想将未偿总额添加到第一个查询中。
我尝试使用子选择,但出现错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
由于不同的列,工会也可能是不可能的。
我想将其用于报告目的,当然可以通过 Excel 和 vlookup 解决它,但我想在 SQL 中完成它以了解有关 SQL 的更多信息。
任何帮助都会很棒。谢谢
解决方案
将它们都放在子查询中并将它们连接在一起
SELECT * FROM
(
SELECT
gbkmut.bkstnr_sub,
MAX(orkrg.refer) AS oms25,
MAX(gbkmut.docnumber) AS YourRef,
MIN(gbkmut.datum) AS datum,
cicmpy.debcode AS delv_debnr,
MAX(cicmpy.cmp_name) AS cmp_name,
MAX(gbkmut.datum) AS latest_deldat,
FROM
gbkmut
INNER JOIN
orkrg ON gbkmut.bkstnr_sub = orkrg.ordernr
INNER JOIN
cicmpy ON orkrg.verzdebnr = cicmpy.debnr
INNER JOIN
items ON gbkmut.artcode = items.itemcode AND items.type <> 'P'
INNER JOIN
magaz ON gbkmut.warehouse = magaz.magcode AND magaz.blokkeer = 0
WHERE
(gbkmut.transsubtype IN ('B','H')
AND gbkmut.freefield1 = 'V'
AND gbkmut.Blockitem = 0
AND gbkmut.afldat <= GETDATE())
AND gbkmut.Checked = 1
AND (orkrg.ordbv_afdr = 0 OR (orkrg.ordbv_afdr = 1 AND orkrg.ordbv_afgd = 1))
GROUP BY
gbkmut.bkstnr_sub,
gbkmut.afldat,
cicmpy.debcode
ORDER BY
gbkmut.bkstnr_sub DESC
) T1
JOIN
(
SELECT TOP 1000
[Debtor code],
[Outstanding Amount]
FROM
[456].[dbo].[GRV_DebtorOutstanding]
) T2 ON T2.[Debtor code] = T1.delv_debnr
推荐阅读
- javascript - 如何使用 JQuery 或 Javascript 设置日期类型值的输入
- javascript - 如何在条形图 js 3.x 上显示数据值?
- ruby-on-rails - 跨整个模型而不是用户记录的弹性搜索
- scala - when() 子句中的 Scala 多个条件
- react-native - 如何覆盖 NativeBase 上的默认主题?
- javascript - 快递.js;在全球范围内使用路由变量
- google-cloud-platform - 如何将包含 Google Cloud Shell 工作区的 .tar 文件上传到另一个 IDE?
- java - IllegalArgumentException:要求失败:rawPredictionCol 向量的长度必须为 2,但在 Apache Spark 中测试模型时得到 3
- node.js - 如何让 Discord 公会成员计入机器人状态?
- python - 如何在模板(django)中调用 OneToOneField 反向关系?