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

时间:2017-05-24 14:55:01

标签: sql-server tsql pivot

我有这个简单的选择,有效:

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

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

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

错误消息:

  

消息207,级别16,状态1,行5无效的列名称' MEASURE_VAL'。消息207,级别16,状态1,行2无效的列名称' FLOWSHEET_ROW'。

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

2 个答案:

答案 0 :(得分:0)

根据您收到问题的错误消息,您使用的是MEASURE_VAL。 PIVOT调用中的FLOWSHEET_ROW列和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_ROWR PNEUMATIC COMPRESSORS INITIATED已在最终选择列表中替换为新列R AN ANTIBIOTIC ADMINISTERED<a href="@Url.Action("VoteForPost", "PostVote", new { id = Model.PostID })" class=" btn btn-success">Vote</a>

答案 1 :(得分:0)

由于pivot 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