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 ----
我不确定为什么像这是行不通的。它给你行而不是列...
Select Sum(x.value), reference
from table_abc
where ID = @itemID
group by reference
如果你需要列,你可以使用动态SQL和透视列。或者如果你总是知道会有3个引用,我们可以用case语句和一个行号做一些不同的事情。
xQbert - 谢谢 - 它需要在列中显示目的。枢轴列可能工作。列数是未知的 – user2216540
xQbert - 如果我使用您提供的实例,它会将所有值相加为相同,并且它不会基于每个单独的参考值对值进行求和。 – user2216540
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'
让我测试它! :) – user2216540
连接表就变成带括号的子查询(),并给它一个别名 – budirec
RDBMS是什么? mySQL,SQL服务器?从[]开始猜测SQL服务器。 AND ....它table_yz从第一个查询您的不同列表?最后他们需要成为专栏?这看起来好像作为一个群体或使用分析一样更容易。 – xQbert
SQL Server - 谢谢 – user2216540