【发布时间】:2012-09-22 07:50:05
【问题描述】:
如何按第 1 周、第 2 周、第 3 周等旋转下表。每个月?谢谢。
例如 数据库表:
这是我需要的表:
这就是我所做的,但我需要更有效的方法来做到这一点。
SELECT 'Oct' AS [Month]
,[Ocd]
,(select Wk_Cmpl from tb1 where WkNum = '1' and RIGHT(wkdt,2) = '10' and Ocd = '167') as wk1
,(select WKLY_PCT from tb1 where WkNum = '1' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as [wk1%]
,(select WE from tb1 where WKNum = '2' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as wk2
,(select WKLY_PCT from tb1 where WkNum = '2' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as [wk2%]
,(select WE from tb1 where WkNum = '3' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as wk3
,(select WKLY_PCT from tb1 where WkNum = '3' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as [wk3%]
,(select WE from tb1 where WkNum = '4' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as wk4
,(select WKLY_PCT from tb1 where WkNum = '4' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as [wk4%]
,(select WE from tb1 where WkNum = '5' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as wk5
,(select WKLY_PCT from tb1 where WkNum = '5' and SUM_LVL_Sort=3.00 and RIGHT(wkdt,2) = '10' and Ocd = '167') as [wk5%]
,[WKLY_AVG] As [Wk Avg]
,[MTH] AS [Mo. Cmpl]
,[COMB_FYTD_COMPLT_ALL] As [M/YTD Total]
,[COMB_FYTD_COMPLT_TARGET_PCT] As [% Goal]
FROM tb1
【问题讨论】:
-
看起来您已经在 Excel 中完成了。您是在问如何在 SQL 中完全做到这一点?你用的是什么关系型数据库?
-
是的,我正在尝试在 SQL、SSMS 2008 中执行此操作,谢谢。
-
您查看过MS BOL 中的PIVOT SQL 命令吗?您已经在 SSMS / SQL 中尝试过什么?
-
@JamesL。请参阅上面的查询。
标签: sql sql-server tsql pivot