使用单个表对两列进行数据透视操作

时间:2019-04-20 12:16:41

标签: sql sql-server

我附了两个桌子。一个表有输入,而另一个表是我想要的输出。

Declare @getfval as nvarchar(MAX)='';
Declare @query as nvarchar(MAX)='';
Declare @getsval as nvarchar(MAX)='';

select @getfval = @getfval + QUOTENAME(tagname) + ',' from (select 
               distinct tagname from TagTable) as tp
select @getfval = SUBSTRING(@getfval, 0, LEN(@getfval))

select @getsval = @getsval + QUOTENAME(tagname) + ',' from (select 
    distinct tagname from tag3 ) as sp
select @getsval = SUBSTRING(@getsval, 0, LEN(@getsval))

set @query = 'select * from
    (
        select DateAndtime, tagname, fval, sval from 
       tag3
    ) src
    pivot
        (max(fval) for tagname in ('+@getfval+')) as pivot1 
    pivot
       (max(sval) for tagname in ('+@getsval+')) as pivot2 '

    execute(@query)

我尝试了这一操作,但是由于在透视操作中使用了列名(即标记名),因此出现错误。这是错误

  

PIVOT运算符中指定的列名“ Tag1”与PIVOT参数中的现有列名冲突

那我该怎么办?

我想为所需的输出编写过程

i have this table

desired output table

0 个答案:

没有答案