我正在编写一个包含必须生成的数据透视表的查询。现在,下面是我的代码。
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中运行。请让我知道如何使此查询类似于第一个查询。所以我可以在我的程序中使用相同的东西。
由于
答案 0 :(得分:0)
Microsoft的SQL Server JDBC驱动程序(mssql-jdbc)支持执行匿名代码块(多个SQL语句),因此我们只需执行相同的SQL代码即可,包括{{1} }:
EXECUTE(...)