基本的 UNION 或 JOIN
Basic UNION or JOIN
我已经制定了一些提取我想要的数据的查询,但我似乎无法将它们放在一起。我想将所有信息集中在一个 table 中。
SELECT MarketIdentifier, CurveType, VintageYear, Rate = Avg(RateValue) FROM #RateCurves GROUP BY MarketIdentifier, CurveType, VintageYear ORDER BY MarketIdentifier, CurveType, VintageYear
SELECT MarketIdentifier, CurveType, VintageYear, Obligation = Avg(ObligationValue) FROM #ObligationCurves GROUP BY MarketIdentifier, CurveType, VintageYear ORDER BY MarketIdentifier, CurveType, VintageYear
以上两个 select 语句导致两个不同的 tables,一个具有以下 headers:
MarketIdentifier, CurveType, VintageYear, Rate
另一个:
MarketIdentifier, CurveType, VintageYear, Obligation
我只是希望输出为:
MarketIdentifier, CurveType, VintageYear, Obligation, Rate
我已经尝试了 JOIN、UNION、UNION ALL 等的多种不同组合。其中一些会产生所需的 table 格式但值不正确。我确定这是我所缺少的非常基本的东西。
两个句子中的字段必须相同。试一试:
SELECT MarketIdentifier, CurveType, VintageYear, NULL as Obligation , Rate = Avg(RateValue)
FROM #RateCurves
GROUP BY MarketIdentifier, CurveType, VintageYear
ORDER BY MarketIdentifier, CurveType, VintageYear
UNION
SELECT MarketIdentifier, CurveType, VintageYear, Obligation = Avg(ObligationValue), NULL as Rate
FROM #ObligationCurves
GROUP BY MarketIdentifier, CurveType, VintageYear
ORDER BY MarketIdentifier, CurveType, VintageYear;
一种方法是将 group by
结果放入派生的 table 和 t1
和 t2
中,然后按分组依据的列加入。
下面的查询假定两个查询的每个(MarketIdentifier、CurveType、VintageYear)组合都有 1 行。即不会有一个 table 而不是另一个的 (MarketIdentifier, CurveType, VintageYear)。否则,您必须根据需要执行左联接或全联接。
select * from (
your first query here
) t1 inner join (
your second query here
) t2 on t2.MarketIdentifier = t1.MarketIdentifier
and t2.CurveType = t1.CurveType
and t2.VintageYear = t1.VintageYear
我已经制定了一些提取我想要的数据的查询,但我似乎无法将它们放在一起。我想将所有信息集中在一个 table 中。
SELECT MarketIdentifier, CurveType, VintageYear, Rate = Avg(RateValue) FROM #RateCurves GROUP BY MarketIdentifier, CurveType, VintageYear ORDER BY MarketIdentifier, CurveType, VintageYear
SELECT MarketIdentifier, CurveType, VintageYear, Obligation = Avg(ObligationValue) FROM #ObligationCurves GROUP BY MarketIdentifier, CurveType, VintageYear ORDER BY MarketIdentifier, CurveType, VintageYear
以上两个 select 语句导致两个不同的 tables,一个具有以下 headers:
MarketIdentifier, CurveType, VintageYear, Rate
另一个:
MarketIdentifier, CurveType, VintageYear, Obligation
我只是希望输出为:
MarketIdentifier, CurveType, VintageYear, Obligation, Rate
我已经尝试了 JOIN、UNION、UNION ALL 等的多种不同组合。其中一些会产生所需的 table 格式但值不正确。我确定这是我所缺少的非常基本的东西。
两个句子中的字段必须相同。试一试:
SELECT MarketIdentifier, CurveType, VintageYear, NULL as Obligation , Rate = Avg(RateValue)
FROM #RateCurves
GROUP BY MarketIdentifier, CurveType, VintageYear
ORDER BY MarketIdentifier, CurveType, VintageYear
UNION
SELECT MarketIdentifier, CurveType, VintageYear, Obligation = Avg(ObligationValue), NULL as Rate
FROM #ObligationCurves
GROUP BY MarketIdentifier, CurveType, VintageYear
ORDER BY MarketIdentifier, CurveType, VintageYear;
一种方法是将 group by
结果放入派生的 table 和 t1
和 t2
中,然后按分组依据的列加入。
下面的查询假定两个查询的每个(MarketIdentifier、CurveType、VintageYear)组合都有 1 行。即不会有一个 table 而不是另一个的 (MarketIdentifier, CurveType, VintageYear)。否则,您必须根据需要执行左联接或全联接。
select * from (
your first query here
) t1 inner join (
your second query here
) t2 on t2.MarketIdentifier = t1.MarketIdentifier
and t2.CurveType = t1.CurveType
and t2.VintageYear = t1.VintageYear