【问题标题】:Receiving Invalid Column names in Unpivot Query in SQL在 SQL 的 Unpivot 查询中接收无效的列名
【发布时间】:2016-05-14 21:44:55
【问题描述】:

当我尝试在查询分析器中运行以下查询时,我收到消息:

消息 207,第 16 级,状态 1,第 2 行
列名“TotalHours”无效。

消息 207,第 16 级,状态 1,第 2 行
列名“ClientServiceHours”无效。

消息 207,第 16 级,状态 1,第 2 行
列名“ClientPRDHours”无效。

消息 207,第 16 层,状态 1,第 3 行
列名“OtherReportableTime”无效。

消息 207,第 16 层,状态 1,第 3 行
列名“WeekendHours”无效。

消息 207,第 16 层,状态 1,第 3 行
列名“FlightsPerWeek”无效。

消息 207,第 16 层,状态 1,第 4 行
列名“Utilization”无效。

消息 207,第 16 层,状态 1,第 4 行
列名“CEDHours”无效。

这是我正在运行的代码:

SELECT 
    THID AS 'ThresholdID', ThresholdID,
    TotalHours, ClientServiceHours, ClientPRDHours,
    OtherReportableTime, WeekendHours, FlightsPerWeek,
    HotelNightsPerWeek, Utilization, CEDHours,
    b.THX AS 'Threshold', ThresholdID AS 'ThresholdValue'
FROM 
    (SELECT 
         THID,
         TotalHours, ClientServiceHours, ClientPRDHours,
         OtherReportableTime, WeekendHours, FlightsPerWeek,
         HotelNightsPerWeek, Utilization, CEDHours
     FROM 
         [dbo].[MyTable]) AS a
UNPIVOT
(
     ThresholdID FOR THX IN (
        TotalHours, ClientServiceHours, ClientPRDHours,
        OtherReportableTime, WeekendHours, FlightsPerWeek,
        Utilization, CEDHours)
) AS b
ORDER BY THID

这是我正在使用的表格布局以及当前表格中的少量数据:

THRESHOLDID THID    TOTALHOURS  CLIENTSERVICEHOURS  CLIENTPRDHOURS  OTHERREPORTABLETIME WEEKENDHOURS    FLIGHTSPERWEEK  HOTELNIGHTSPERWEEK  UTILIZATION CEDHOURS
0   0   0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
1   1   55.00   0.00    0.00    0.00    0.10    5.00    5.00    90.00   0.00
2   2   55.00   0.00    0.00    0.00    0.10    5.00    5.00    90.00   0.00
3   3   55.00   0.00    0.00    0.00    0.10    5.00    5.00    90.00   0.00
4   4   55.00   0.00    0.00    0.00    0.10    5.00    5.00    90.00   0.00
5   5   55.00   0.00    0.00    0.00    0.10    5.00    5.00    80.00   0.00
6   6   55.00   0.00    0.00    0.00    0.10    5.00    5.00    70.00   0.00
7   7   55.00   0.00    0.00    0.00    0.10    5.00    5.00    70.00   0.00
8   8   41.67   39.93   7.90    0.00    0.31    1.24    3.00    1.00    0.00
9   9   45.49   39.70   12.51   0.00    0.88    1.10    3.00    0.99    0.00

如您所见,列名是正确的。我想知道是否有人知道为什么我会收到列名无效的错误消息。我在 SQL Server 2014 数据库上运行它。

非常感谢任何帮助。

谢谢 顺便说一句

【问题讨论】:

  • 可以发一下MyTable的DDL吗?另外,这是一个完整的错误列表还是有另一个错误,如The type of column "XXX" conflicts with the type of other columns specified in the UNPIVOT list.

标签: sql sql-server-2014


【解决方案1】:

预期的结果是什么?

您的代码只能使用以下语法:

select  THID as 'ThresholdID',
        ThresholdID TotalHours,
b.THX AS 'Threshold', ThresholdID AS 'ThresholdValue'
from    (
            select  
                    TotalHours,
                    ClientServiceHours,
                    ClientPRDHours,
                    OtherReportableTime,
                    WeekendHours,
                    FlightsPerWeek,
                    HotelNightsPerWeek,
                    Utilization,
                    CEDHours,
                    THID
            from    [dbo].[MyTable]
        ) as a
UNPIVOT(ThresholdID for THX in(
    TotalHours,
    ClientServiceHours,
    ClientPRDHours,
    OtherReportableTime,
    WeekendHours,
    FlightsPerWeek,
    Utilization,
    CEDHours
)
) as b
order by    THID

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多