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
说明您希望为每个组求和这些值。
使用 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
说明您希望为每个组求和这些值。