TSQL - 基于另一个表的结果集选择sql记录

时间:2016-09-12 02:23:20

标签: sql-server tsql stored-procedures

我需要帮助来得出结果如下:

表A

Metric
AA
BB
FF

TableB

Mth     AA  BB  CC  DD  EE
Jan     a1  b1  c1  d1  e1
Feb     a2  b2  c2  d2  e2
Mar     a3  b3  c3  d3  e3

预期结果

Jan AA  a1
Jan BB  b1
Jan FF  NULL
Feb AA  a2
Feb BB  b2
Feb FF  NULL
Mar AA  a3
Mar BB  b3
Mar FF  NULL

基本上,我想根据 TableB 中的指标从 TableA 中选择记录,如果列不可用则显示NULL。

我想出了一些想法,但仍在努力,很快就会发布更多细节。感谢。

1 个答案:

答案 0 :(得分:1)

Select Tbl1.Mth,Tbl1.Metric,MthMetric
From 
(
  select distinct Mth ,Metric
  from TableB
  cross join TableA
)As Tbl1
Left Join
(
  SELECT u.MthMetric, u.ColVal,u.Mth --into ##TempDt
  FROM TableB s 
  unpivot( MthMetric
      FOR ColVal IN (AA,BB)) AS u
 )As Tbl2
 On Tbl1.Mth=Tbl2.Mth and Tbl1.Metric=Tbl2.ColVal
 Order by Tbl1.Mth,Tbl1.Metric