sqlserver中的动态数据透视

时间:2016-05-18 08:05:43

标签: sql-server jdbc

我正在编写一个包含必须生成的数据透视表的查询。现在,下面是我的代码。

select *
from
(select [case owner], [time taken(minutes)] from StatusTable) as pivotdata
pivot(
sum([time taken(minutes)])
for [CASE OWNER] in
("XXX", "AAA", "BBB")
) as pivoting

但是我没有在for-in中提供行,而是需要动态获取这些内容,我在此处看到了一个查询SQL Server dynamic PIVOT query?并将我的查询修改为

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME([case owner]) 
            FROM StatusTable c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'select *
from
(select [case owner], [time taken(minutes)] from StatusTable) as pivotdata
pivot(
sum([time taken(minutes)])
for [CASE OWNER] in
('+@cols+')
) as pivoting'

execute(@query)

这很好用,但问题是我在我的JDBC程序中使用这个查询。并且不使用execute(@query),它不在我的sqlserver中运行。请让我知道如何使此查询类似于第一个查询。所以我可以在我的程序中使用相同的东西。

由于

1 个答案:

答案 0 :(得分:0)

Microsoft的SQL Server JDBC驱动程序(mssql-jdbc)支持执行匿名代码块(多个SQL语句),因此我们只需执行相同的SQL代码即可,包括{{1} }:

EXECUTE(...)