SQL PIVOT-запрос повторяет одинаковые значения для всех поворотных строк

У меня есть следующий скрипт:

select OFFC, 201501, 201412, 201411
from 
(
 select [OFFC], [PERIOD], [BILL_NUM] 
 from BLT_BILL
) as UP
PIVOT
(
 max([BILL_NUM]) 
 FOR [PERIOD] in ([201501],[201412],[201411])
) as pvt
order by OFFC

Я хотел, чтобы он показал мне последний номер счета, созданный для каждого офиса. Возвращаемые результаты:

OFFC (No column name) (No column name) (No column name)

NULL 201501 201412 201411
CHES 201501 201412 201411
LIV 201501 201412 201411
LON 201501 201412 201411
MCR 201501 201412 201411
SHEF 201501 201412 201411

Может кто-нибудь объяснить, почему мои данные perdios отображаются в данных, а не в заголовках, и почему мой max(bill_num) не отображается в области данных?

2 ответа

По заявлению

select OFFC, 201501, 201412, 201411

Вы сообщаете sql чтобы возвращать литеральные (постоянные) числа

Вам нужно избегать этих:

select OFFC, [201501], [201412],[201411]


Значения в элементе являются числовыми константами. Вам нужны квадратные скобки:

select OFFC, [201501], [201412], [201411]
from 
(
 select [OFFC], [PERIOD], [BILL_NUM] 
 from BLT_BILL
) as UP
PIVOT
(
 max([BILL_NUM]) 
 FOR [PERIOD] in ([201501],[201412],[201411])
) as pvt
order by OFFC

licensed under cc by-sa 3.0 with attribution.