Two Tables/Databases error: Only one expression can be specified in the select list when the subquery is not introduced with EXISTS

Two Tables/Databases error: Only one expression can be specified in the select list when the subquery is not introduced with EXISTS

使用 SQL 服务器我试图使用 2 个 table 和 2 个数据库将不同部件号的两列相乘,但它给出了这个错误:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

此 SQL 连接不同数据库中的两个 table 并显示保险杠的最终零件编号 (FinalPartNo) 以及需要将其组合在一起的辅助零件(螺栓、支架等) .)

查询:

SELECT 
tb_1.FinalPartNo,
tb_1.SubPartType,
tb_1.SubPart,
tb_1.FinalItemSubPartQuantity,
tb_2.PurchasedOrMfg,
tb_2.SalesWeek1,
tb_2.SalesWeek2         

FROM [009Reports].[dbo].[ANC Parts] tb_1
JOIN [555].[cache].[PurchasingSupplyChainNeeds] tb_2 ON tb_1.FinalPartNo = tb_2.ItemNo

所以它显示这个:

如果您查看 table 并为了简化事情,我突出显示了 3 个部件号,它们都使用相同的子部件。其中两个使用 4 个 FinalSubPartQuantity,一个在“安装”步骤中使用 2 个。对于图像中突出显示的 SalesWeek1,他们售出了两个 FinalPartNo,这需要 4 个 FinalSubPartQuantity 并且有两次销售,因此该周总共需要 8 个。我不需要 FinalPartNo 但添加它以表明它是具有相同子部分的多个 FinalPartNo。

试图用那个星期(52 周,只显示 2)的每个子部分的总计列来计算它们的总和。 在此示例中,SalesWeek1 的 03CSFY-0500350 总共可以有 150 个 多个 FinalPartNo 和多个步骤(制造、装配、安装)。

所以,我尝试了一个子查询来使 SubPart 不同,并将 FinalSubPartQuantity x SalesWeek1 乘以 TotalSalesWeek1 但出现错误。试图找出语法。

SELECT 
tb_1.SubPart,
tb_1.FinalItemSubPartQuantity,
TotalSalesWeek1 = (SELECT DISTINCT(tb_1.SubPart),
                    tb_1.FinalItemSubPartQuantity * tb_2.SalesWeek1),               
TotalSalesWeek2 = (SELECT DISTINCT(tb_1.SubPart),
                    tb_1.FinalItemSubPartQuantity * tb_2.SalesWeek2)
FROM [009Reports].[dbo].[ANC Parts] tb_1
JOIN [555].[cache].[PurchasingSupplyChainNeeds] tb_2 ON tb_1.FinalPartNo = tb_2.ItemNo

我只是想显示:

SubPart/FinalSubPartQuantity/TotalSalesWk1/TotalSalesWk2/TotalSalesWk3/ 到第 52 周。所以它只显示子部分,所有不同 FinalPartNo 的该部分的所有 FinalSubPartQuantity 金额的总和以及总销售额 FinalItemPartQuantity * SalesWeek1, 2, 3.. .

总结:子部分以及该部分那周售出的数量。

您不能将 TotalSalesWeek1 设置为两列(DISTINCT(tb_1.SubPart)tb_1.FinalItemSubPartQuantity * tb_2.SalesWeek1)。

我建议如下

SELECT 
 tb_1.SubPart,
 SUM(tb_1.FinalItemSubPartQuantity) FinalItemSubPartQuantity,
 SUM(tb_1.FinalItemSubPartQuantity * tb_2.SalesWeek1) TotalSalesWeek1            
 SUM(tb_1.FinalItemSubPartQuantity * tb_2.SalesWeek2) TotalSalesWeek2
FROM [009Reports].[dbo].[ANC Parts] tb_1
JOIN [555].[cache].[PurchasingSupplyChainNeeds] tb_2 ON tb_1.FinalPartNo = tb_2.ItemNo
GROUP BY tb_1.SubPart

最后的 GROUP BY tb_1.SubPart 表示您希望每个唯一的子部分在一行中,SELECT 中的 SUM 说明您希望为每个组求和这些值。