从我的阅读中,我只能在知道要显示的列时使用PIVOT
。否则,我必须使用动态sql:
select * into #another_table
from
(
select City, [month], [win-loss]
from #final
) src
pivot
(
min([win-loss])
for month in ([1], [2], [3], [4], [5])
) piv;
在上面的查询中,for month in ([1], [2], [3], [4], [5])
指的是月份号,在此特定查询中,#final
具有从1-5月份开始的数据。
尽管我不知道如何查询几个月,但我知道month
列最多可以查询十二个月。
是否可以插入IF
语句,以便考虑最长12个月的任何组合?
我宁愿不使用动态sql,除非没有其他选择。
#final
看起来像这样。至少在此示例中,我知道存在1-5个月的行,但是将从该表中检索月份数:
City month win-loss
Houston 1 LOSS
Miami 2 WON
Orlando 3 WON
Reading 4 WON
答案 0 :(得分:0)
不可能在单个语句中插入IF。您可以使用IF避免动态sql的方式如下(伪代码):
IF A = true
{SELECT Query A}
ELSE IF B = true
{SELECT Query B}
ELSE IF ...