我希望你能帮助我。
我需要创建一个查询,该查询将使用动态结果中的值作为左连接表。
例如:
此查询将始终返回不同的值。基于每个@itemid。
SELECT DISTINCT [Reference]
FROM TABLE_ABC
WHERE ID = @ItemId
然后使用这个'Reference'值,我需要保持对这些值的连接,并且还返回以下查询的总和。 如果我在每个左连接中对参考进行硬编码,则下面的查询工作正常。 但是我需要根据它返回的引用项的数量使它全部动态,它将创建查询。
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'
有人可以就如何创建此脚本给我一些建议吗? 或者我应该搜索什么?
提前多多感谢。
安德森
**样本结果:
Total ---- Ref A ---- Ref B ---- Ref C ---- Ref D ---- Ref E ----等等......
1,000.00 ---- 100.00 ---- 200.00 ---- 300.00 ---- 250.00 ---- 250.00
答案 0 :(得分:2)
这是你需要的吗?
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'
答案 1 :(得分:1)
我不确定为什么这样的事情不起作用。它为您提供行而不是列...
Select Sum(x.value), reference
from table_abc
where ID = @itemID
group by reference
如果需要列,可以使用动态SQL并透视列。或者如果你总是知道会有3个引用,我们可以用case语句和行号做一些不同的事情。