【问题标题】:Error : The type of column "DOB" conflicts with the type of other columns specified in the UNPIVOT list错误:列“DOB”的类型与 UNPIVOT 列表中指定的其他列的类型冲突
【发布时间】:2017-12-20 19:31:04
【问题描述】:

我的查询,

只需将行转换为列

SELECT
  ColumnName,
  value
FROM (SELECT
  id [ID],
  firstname [First Name],
  lastname [Last Name],
  dob [DOB],
  sex [Gender]
FROM client
WHERE id = '11') d
UNPIVOT
(
Value FOR
ColumnName IN ([ID], [First Name], [Last Name], [DOB], [Gender])
) unpiv;

但它显示一个错误。

“DOB”列的类型与 UNPIVOT 列表中指定的其他列的类型冲突。

【问题讨论】:

    标签: sql-server-2008 tsql type-conversion unpivot


    【解决方案1】:

    由于结果将带回行中的所有列,并使用所有值构建一个新的派生列,因此您必须确保类型适合在一起。

    您可以将所有列包装在 CAST

    SELECT
      ColumnName,
      value
    FROM (SELECT
      CAST(id AS NVARCHAR(MAX)) [ID],
      CAST(firstname AS NVARCHAR(MAX)) [First Name],
      CAST(lastname AS NVARCHAR(MAX)) [Last Name],
      CAST(dob AS NVARCHAR(MAX)) [DOB],
      CAST(sex AS NVARCHAR(MAX)) [Gender]
    FROM client
    WHERE id = '11') d
    UNPIVOT
    (
    Value FOR
    ColumnName IN ([ID], [First Name], [Last Name], [DOB], [Gender])
    ) unpiv;
    

    DOB 将转换为您机器的默认设置。使用CONVERT,您可以强制执行给定的日期/时间格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2021-09-29
      • 2021-07-06
      相关资源
      最近更新 更多