我有2个表,1个有列
Year | Jan | Feb | Mar | Apr | May
等。
这需要转移到带有列
的表中Year | MonthNo | Value
我知道转换的工作方式是从月份缩写到数字,但我无法实现每种 - >>列 - >插入。请协助。
答案 0 :(得分:1)
请尝试使用unpivot:
SELECT Year, MonthNo, Value
FROM
(SELECT *
FROM Table1) p
UNPIVOT
(Value FOR MonthNo IN
(Jan, Feb, Mar)
)AS unpvt;
答案 1 :(得分:1)
如果您使用的是SQL Server 2005或更高版本,请使用UNPIVOT operator。
INSERT INTO Table2 (Year, MonthNo, Value)
SELECT Year, MonthNo, Value
FROM Table1
UNPIVOT (Value FOR MonthNo IN (Jan, Feb, Mar)) AS unpvt;
答案 2 :(得分:0)
您可以执行以下操作:
INSERT INTO table2
SELECT Year,'1', Jan FROM table1
这是一月份你必须重复几个月。只需改变月号即可。和名字。
答案 3 :(得分:0)
在SQL Server上,您可以使用unpivot,但为了便于携带,我总是使用如下构造:
select Year
, 1 monthno
, jan_value
from table
union all
select Year
, 2 monthno
, feb_value
from table
...
union all
select Year
, 12 monthno
, dec_value
from table
答案 4 :(得分:-2)
如果您在SQL Server中执行此操作,则可以执行select语句:
SELECT column_name,
*
FROM information_schema.columns
WHERE table_name = 'YourTableName'
使用它,您可以插入语句