Sql server 如何筛选透视结果
是否可以从轴结果中排除某些变量 我想知道是否可以排除Pivot表中值为0的列Sql server 如何筛选透视结果,sql-server,sql-server-2008-r2,pivot,Sql Server,Sql Server 2008 R2,Pivot,是否可以从轴结果中排除某些变量 我想知道是否可以排除Pivot表中值为0的列 假设EventType Meeting的计数为0,是否可以完全不显示它?我希望您已经实现了问题的以下解决方案 DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT distinct ',' + QUOTENAME(EventType) from dbo
假设EventType Meeting的计数为0,是否可以完全不显示它?我希望您已经实现了问题的以下解决方案
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(EventType)
from dbo.testTable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT year,' + @cols + '
from
(
select EventType,
year = year(date)
from dbo.testTable
) x
pivot
(
count(EventType)
for EventType in (' + @cols + ')
) p '
execute(@query)
如果是这样,那么您可以执行以下操作
DECLARE @cols AS NVARCHAR(MAX),
@where AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(EventType)
from dbo.testTable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
select @where = ' where ' + STUFF((SELECT distinct ' Or ' + QUOTENAME(EventType) + ' <> 0 '
from dbo.testTable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,2,3,'')
set @query = 'SELECT year,' + @cols + '
from
(
select EventType,
year = year(date)
from dbo.testTable
) x
pivot
(
count(EventType)
for EventType in (' + @cols + ')
) p ' + @where
execute(@query)
@bluefeet提供的对您前面问题的回答似乎很好。在这种情况下,具有动态查询的部分工作正常,如果原始数据中没有具有会议类型的行,则该列不包括在结果中。我尝试了解决方案,但没有注意到不好的结果。