Sql server SQL Server Pivot使用LIKE而不是IN

Sql server SQL Server Pivot使用LIKE而不是IN,sql-server,stored-procedures,pivot,Sql Server,Stored Procedures,Pivot,我想知道我是否可以在不直接引用in子句中的值的情况下在存储过程中进行透视 例如,我有一个轴,看起来像: select * from DailyIncome pivot (avg (IncomeAmount) for IncomeDay in ([MON],[TUE],[WED],[THU],[FRI],[SAT],[SUN])) as AvgIncomePerDay 是否有可能使其能够从以下方面获取结果: select * from DailyIncome pivot (avg (Inc

我想知道我是否可以在不直接引用in子句中的值的情况下在存储过程中进行透视

例如,我有一个轴,看起来像:

select * 
from DailyIncome 
pivot (avg (IncomeAmount) for IncomeDay in ([MON],[TUE],[WED],[THU],[FRI],[SAT],[SUN])) as AvgIncomePerDay
是否有可能使其能够从以下方面获取结果:

select * 
from DailyIncome
pivot (avg (IncomeAmount) for IncomeDay LIKE ('%MON%','%TUE%','%WED%','%THU%','%FRI%','%SAT%','%SUN%')) as AvgIncomePerDay

您应该格式化源数据

周一|周二 --: | --: 11 | 23
dbfiddle

PIVOT需要一个众所周知的列名称。哪些可能的值具有您的列名?我有一个触发器,它将数字附加到重复的值。因此,我可能并不总是知道数字,因此需要一个通配符。如果我想将mon10、mon11、MON13等分开,该怎么办?@AlanPear,那么您必须将它们全部添加到IN子句中
create table tbl (name varchar(10), value int);
insert into tbl values
('mon10', 10),
('mon11', 11),
('mon13', 13),
('tue10', 20),
('tue11', 21),
('tue12', 30);
GO
6 rows affected
select *
from
(
    select case when name like '%mon%' then 'mon'
                when name like '%tue%' then 'tue'
                end name,
            value
    from   tbl
) src
pivot
(
  avg(value) for name in ([mon], [tue]) 
) pv;
GO
mon | tue --: | --: 11 | 23