为什么我使用 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_VALUE
和 FLOWSHEET_ROW
已在最终 select 列表中替换为新列 R PNEUMATIC COMPRESSORS INITIATED
、R 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
我有这个简单的 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_VALUE
和 FLOWSHEET_ROW
已在最终 select 列表中替换为新列 R PNEUMATIC COMPRESSORS INITIATED
、R 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