目的如下:将图1转换为图2 ,就是将因子名称字段里面的值单独提出来作为新的数据表的字段,来提高查询速度
图1
图2
sql如下:
/****** Script for SelectTopNRows command from SSMS ******/
SET ANSI_WARNINGS OFF;
insert into [lzz_db].[dbo].[t_stock_factor_transpose]
( [stock_date]
,[stock_code]
,[asset_mrq]
,[avg_total_market_capitalization_1y]
,[betahs300index]
,[free_turn]
,[m1changepctrm]
,[netprofit_ttm]
,[nonresisharesjy]
,[pe_ttm]
,[volatility60]
,[y1volatility]
,[yoyroe]
,[update_time]
,[stamp]
)
SELECT [stock_date]
,[stock_code]
,max([asset_mrq]) [asset_mrq]
,max([avg_total_market_capitalization_1y]) [avg_total_market_capitalization_1y]
,max([betahs300index]) [betahs300index]
,max([free_turn]) [free_turn]
,max([m1changepctrm]) [m1changepctrm]
,max([netprofit_ttm]) [netprofit_ttm]
,max([nonresisharesjy]) [nonresisharesjy]
,max([pe_ttm]) [pe_ttm]
,max([volatility60]) [volatility60]
,max([y1volatility]) [y1volatility]
,max([yoyroe]) [yoyroe]
,getdate()
,getdate()
FROM
(
SELECT [stock_code]
,[stock_date]
,[asset_mrq]
,[avg_total_market_capitalization_1y]
,[betahs300index]
,[free_turn]
,[m1changepctrm]
,[netprofit_ttm]
,[nonresisharesjy]
,[pe_ttm]
,[volatility60]
,[y1volatility]
,[yoyroe]
FROM [lzz_db].[dbo].[t_stock_factor]
PIVOT
(
MAX([factor_value]) FOR [factor_name] in (
[asset_mrq]
,[avg_total_market_capitalization_1y]
,[betahs300index]
,[free_turn]
,[m1changepctrm]
,[netprofit_ttm]
,[nonresisharesjy]
,[pe_ttm]
,[volatility60]
,[y1volatility]
,[yoyroe]
)
)tbl
)tb2
group by [stock_code]
,[stock_date]
order by [stock_date],[stock_code]