SQL - 根据另一个查询的结果创建连接/查询。联结表将来自另一个查询的结果

问题描述:

我希望你能帮助我。SQL - 根据另一个查询的结果创建连接/查询。联结表将来自另一个查询的结果

我需要创建一个查询,它将使用动态结果中的值作为左连接表。

例如:

这个查询将返回不同的值,所有的时间。基于每个@itemid。

SELECT DISTINCT [Reference] 
FROM TABLE_ABC 
WHERE ID = @ItemId 

然后使用这个'参考'值,我需要在该值上留下连接,并返回下面的查询的总和。 下面的查询完美工作,如果我在每个左连接中硬编码引用。 但我需要做到这一切动态,它会创建查询取决于它返回的参考项目的数量。

SELECT 
SUM(x.Value) [Ref A], 
SUM(x1.Value) [Ref B], 
SUM(x2.Value) [Ref C] 
FROM TABLE_YZ yz 
LEFT JOIN TABLE_ABC x ON yz.id = x.id AND x.Reference = 'Ref A' 
LEFT JOIN TABLE_ABC x1 ON yz.id = x.id AND x1.Reference = 'Ref B' 
LEFT JOIN TABLE_ABC x2 ON yz.id = x.id AND x2.Reference = 'Ref C' 

有没有人能给我一些关于如何创建这个脚本的建议? 或者我应该搜索什么?

非常感谢。

安德森

**样品结果:

总----价甲----价乙----价Ç----价d ----参考ë - ---等等... ..

1,000.00 100.00 ---- 200.00 ---- 300.00 ---- 250.00 ---- 250.00 ----

+0

连接表就变成带括号的子查询(),并给它一个别名 – budirec

+0

RDBMS是什么? mySQL,SQL服务器?从[]开始猜测SQL服务器。 AND ....它table_yz从第一个查询您的不同列表?最后他们需要成为专栏?这看起来好像作为一个群体或使用分析一样更容易。 – xQbert

+0

SQL Server - 谢谢 – user2216540

我不确定为什么像这是行不通的。它给你行而不是列...

Select Sum(x.value), reference 
from table_abc 
where ID = @itemID 
group by reference 

如果你需要列,你可以使用动态SQL和透视列。或者如果你总是知道会有3个引用,我们可以用case语句和一个行号做一些不同的事情。

+0

xQbert - 谢谢 - 它需要在列中显示目的。枢轴列可能工作。列数是未知的 – user2216540

+0

xQbert - 如果我使用您提供的实例,它会将所有值相加为相同,并且它不会基于每个单独的参考值对值进行求和。 – user2216540

+0

XQbert - 它的工作!谢谢!!!!! :) – user2216540

这是你所需要的吗?

SELECT 
SUM(x.Value) [Ref A], 
SUM(x1.Value) [Ref B], 
SUM(x2.Value) [Ref C], 
SUM(x3.Value) [Ref D] 
FROM TABLE_YZ yz 
LEFT JOIN TABLE_ABC x ON yz.id = x.id AND x.Reference = 'Ref A' 
LEFT JOIN TABLE_ABC x1 ON yz.id = x.id AND x1.Reference = 'Ref B' 
LEFT JOIN TABLE_ABC x2 ON yz.id = x.id AND x2.Reference = 'Ref C' 
LEFT JOIN (SELECT DISTINCT [Reference] 
      FROM TABLE_ABC 
      WHERE ID = @ItemId) x3 ON yz.id = x.id AND x3.Reference = 'Ref D' 
+0

让我测试它! :) – user2216540