2017-05-24 70 views
0

我有这个简单的选择,即工作:为什么我使用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'。

任何人有任何建议吗?提前致谢!

+3

'为什么我会得到这个错误',** **被你得到什么错误??另外,你知道'PIVOT'是如何工作的吗? – Lamak

+0

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

+0

https://technet.microsoft.com/zh-cn/library/ms177410(v=sql.105).aspx – jch

回答

0

根据错误信息,您遇到的问题是您使用的是MEASURE_VAL。和FLOWSHEET_ROW列内的您的PIVOT调用,以便他们不再可用于您的最终选择列表。您应该使用子查询或专门命名您想要在最终列表中选择的列。一个例子是:

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已经在最后的选择列表被替换为您的新列R PNEUMATIC COMPRESSORS INITIATEDR AN ANTIBIOTIC ADMINISTERED

0

由于枢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 
相关问题