【发布时间】:2021-02-23 02:01:38
【问题描述】:
我正在尝试通过聚合另一个表中的一些行来扩展现有查询。 当我只返回这样的一列时它可以工作:
Select DISTINCT
Contracts.id,
Contracts.beginTime,
Contracts.endTime,
Suppliers.name
(SELECT COUNT(p.id) from production as p where p.id_contract = Contracts.id)
FROM Contracts
LEFT JOIN Suppliers on Contracts.id = Suppliers.id_contract
然后我尝试为聚合卷添加另一列:
Select DISTINCT
Contracts.id,
Contracts.beginTime,
Contracts.endTime,
Suppliers.name
(SELECT COUNT(p.id), SUM(p.volume) from production as p where p.id_contract = Contracts.id)
FROM Contracts
LEFT JOIN Suppliers on Contracts.id = Suppliers.id_contract
但是,这会返回以下错误:
当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。
我对@987654323@ 关键字进行了一些试验,但不知道如何使它起作用。我也不确定这是否适合我的情况。
想要的输出应该是这样的:
contract1Id, supplierInfoContract1, nrItemsContract1, sumVolumeContract1
contract2Id, supplierInfoContract2, nrItemsContract2, sumVolumeContract2
【问题讨论】:
-
exists 是一个子查询,您可以在其中将父表与子查询中的子表连接起来。如果子查询中有结果,则返回 true。你想要的输出是什么?
-
添加了所需的输出。我希望它很清楚
-
您的代码需要两个子查询,每个子查询只返回一个结果,则不会出现错误消息。错误消息告诉您,您的子查询为一个变量返回两个结果。
标签: sql sql-server tsql