为什么我使用 TSQL Pivot 返回此错误?

Why am I getting this error back using TSQL Pivot?

我有这个简单的 select,很有效:

select CASE_NUM, 
  OpDate, 
  LOCATION, 
  FLOWSHEET_ROW , 
  MEAS_VALUE , 
  Surgeon, 
  SD, 
  ED , 
  Ranking 
from #output o

但是当我尝试旋转 table 时它不会

select
  CASE_NUM, 
  OpDate, 
  LOCATION, 
  FLOWSHEET_ROW , 
  MEAS_VALUE , 
  Surgeon, 
  SD, 
  ED , 
  Ranking
from #output o
pivot 
( 
  max(MEAS_VALUE) 
  for FLOWSHEET_ROW in ([R PNEUMATIC COMPRESSORS INITIATED],[R AN ANTIBIOTIC ADMINISTERED])
) as Checklist

错误信息:

Msg 207, Level 16, State 1, Line 5 Invalid column name 'MEASURE_VAL'. Msg 207, Level 16, State 1, Line 2 Invalid column name 'FLOWSHEET_ROW'.

有人有什么建议吗?提前致谢!

根据错误消息,您遇到的问题是您使用的是 MEASURE_VAL。和 PIVOT 调用中的 FLOWSHEET_ROW 列,因此它们不再可用于最终的 select 列表。您应该使用子查询或在最终列表中专门命名要 select 的列。一个例子是:

select 
  CASE_NUM, 
  OpDate, 
  LOCATION,
  Surgeon, 
  SD, 
  ED , 
  Ranking,
  [R PNEUMATIC COMPRESSORS INITIATED],[R AN ANTIBIOTIC ADMINISTERED]
from
(
  select
    CASE_NUM, 
    OpDate, 
    LOCATION, 
    FLOWSHEET_ROW , 
    MEAS_VALUE , 
    Surgeon, 
    SD, 
    ED , 
    Ranking
  from #output
) o
pivot 
( 
  max(MEAS_VALUE) 
  for FLOWSHEET_ROW in ([R PNEUMATIC COMPRESSORS INITIATED],[R AN ANTIBIOTIC ADMINISTERED])
) as Checklist;

如您所见,MEAS_VALUEFLOWSHEET_ROW 已在最终 select 列表中替换为新列 R PNEUMATIC COMPRESSORS INITIATEDR AN ANTIBIOTIC ADMINISTERED

因为枢轴 FLOWSHEET_ROW 将旋转到不同的列,如下所示:

select   CASE_NUM, 
  OpDate, 
  LOCATION, [R PNEUMATIC COMPRESSORS INITIATED],[R AN ANTIBIOTIC ADMINISTERED]
from
( select
CASE_NUM, 
OpDate, 
LOCATION, 
FLOWSHEET_ROW , 
MEAS_VALUE , 
Surgeon, 
SD, 
ED , 
Ranking
  from #output o
) a
  pivot 
( 
  max(MEAS_VALUE) 
  for FLOWSHEET_ROW in ([R PNEUMATIC COMPRESSORS INITIATED],[R AN ANTIBIOTIC ADMINISTERED])
) as Checklist