2017-06-23 22 views
-1

创建视图调整记录,我需要创建SQL视图,将当前表格转换成以下如何在SQL添加类别列,并通过在SQL

提到我介绍了一个新的类别列所需的格式和重新整形相应的列。

CURENT表格布局:

 Date | A flows| B flows | C flows | A yield | B Yield | C Yield | A Spread | B Spread | C Spread 
    ---------------------------------------------------------------------------------------------------- 
    1/1/17 |10  | 20  |30  | 5  |10  |15  | 1  | 2  |3 

所需的视图布局:

  Date Category flows yield Spread 
     1/1/17  A  10  5  1 
     1/1/17  B  20  10  2 
     1/1/17  C  30  15  3 

谁能帮助创建一个SQL视图,将分类下3类现有列。

谢谢!

回答

1

我会用cross apply

select v.* 
from t cross apply 
    (values (date, 'A', A_Flows, A_yield, A_spread), 
      (date, 'B', B_Flows, B_yield, B_spread), 
      (date, 'C', C_Flows, C_yield, C_spread) 
    ) v(date, category, flows, yield, spread); 

你可以把create view as查询之前创建一个视图。

+0

相信在第二和第三行值表达式的预期文字是''B;和'C'。 –

+0

@DanGuzman。 。 。谢谢。 –

0

您可以使用UNION。分别选择每个类别,然后加入3类一起:

SELECT Date, 'A' AS Category, A_flows AS flows, A_yield AS yield, A_spread AS spread FROM your_table 
UNION 
SELECT Date, 'B' AS Category, B_flows AS flows, B_yield AS yield, B_spread AS spread FROM your_table 
UNION 
SELECT Date, 'C' AS Category, C_flows AS flows, C_yield AS yield, C_spread AS spread FROM your_table