【发布时间】:2019-01-09 03:38:36
【问题描述】:
我对 SQL 查询很陌生,需要一些帮助。
我有两个不同的 SQL 查询,我希望将两者的结果放在一个结果中。
查询 1:
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 的更多信息。
任何帮助都会很棒。谢谢
【问题讨论】:
-
如果您可以使用
VLOOKUP,那么您可以将结果放入临时表并最有可能进行左连接:docs.microsoft.com/en-us/sql/t-sql/statements/… -
请发布使用子查询的尝试,以便我们告诉您为什么遇到错误。
-
您可以将第二个查询设为子查询,然后加入它——这两个查询如何加入呢?你怎么知道 1 中的哪一行要从 2 中添加债务?
-
也许这就是你要找的东西:stackoverflow.com/questions/11574442/…
标签: sql sql-server