【发布时间】:2014-04-21 13:53:39
【问题描述】:
我需要根据我的参数创建一个包含列的表。该参数是字符串变量,它由逗号分隔的多个值的月份和年份组合组成。基于这个值,我需要创建临时表。我试过如下
DECLARE @compareMonths VARCHAR(2000)
DECLARE @compareCount INT
DECLARE @cols VARCHAR(2000)
DECLARE @query AS NVARCHAR(MAX);
SET @compareMonths = '2014-01,2014-02'
select @cols = STUFF((SELECT distinct ',' +
CONVERT(CHAR(3), DATENAME(MONTH, CAST(
CAST(SUBSTRING(Data, 0, 5) AS VARCHAR(4)) +
RIGHT('0' + CAST(SUBSTRING(Data, 6, 2) AS VARCHAR(2)), 2) +
RIGHT('0' + CAST(1 AS VARCHAR(2)), 2)
AS DATETIME))) + ' ' + CAST(SUBSTRING(Data, 0, 5) AS VARCHAR(4))
FROM dbo.Split(@compareMonths, ',')
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
, 1, 1, '');
在这里,我将列名设置为月份名称和年份,但如何基于此动态创建表。我没有任何值列可以使用数据透视。
我的 outout 表必须有 2 列名为 Jan 2014, Feb 2014
【问题讨论】:
-
你需要清楚你想做什么。您想提取 csv 字符串中的所有单词,然后将它们全部插入同一列吗?另外,您面临的问题是什么?这是一个错误吗?示例表?
-
我拆分并获得了表格,其中包含行中的值。现在我需要从这些行创建临时表。我不知道如何通过将行转换为列来创建表。我也没有其他值列可以使用枢轴
标签: sql sql-server