是PIVOT和IF语句还是条件语句?

时间:2018-07-24 13:10:24

标签: sql-server sql-server-2008 tsql

从我的阅读中,我只能在知道要显示的列时使用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

1 个答案:

答案 0 :(得分:0)

不可能在单个语句中插入IF。您可以使用IF避免动态sql的方式如下(伪代码):

IF A = true
  {SELECT Query A}
ELSE IF B = true
  {SELECT Query B}
ELSE IF ...