Sql server 2008 r2 由于类型冲突,取消激励数据失败
我正在使用SQL server 2008,我正在尝试取消填充数据。以下是我正在使用的数据:Sql server 2008 r2 由于类型冲突,取消激励数据失败,sql-server-2008-r2,Sql Server 2008 R2,我正在使用SQL server 2008,我正在尝试取消填充数据。以下是我正在使用的数据: TIME_ELAPSE BUILDINGS_CLEARED FLOORS_CLEARED AWAITING_PERC ----------- ----------------- -------------- ------------------ 15h 21m 4/4 12/12 0 我需要像行值一样输出到列: TIME_ELAPSE
TIME_ELAPSE BUILDINGS_CLEARED FLOORS_CLEARED AWAITING_PERC
----------- ----------------- -------------- ------------------
15h 21m 4/4 12/12 0
我需要像行值一样输出到列:
TIME_ELAPSE 15h 21m
BUILDINGS_CLEARED 4/4
FLOORS_CLEARED 12/12
AWAITING_PERC 0
我尝试的是:
SELECT NAME,VALUE
FROM #TEMP_DRILLUP_SUMMARY
UNPIVOT(VALUE FOR NAME IN (Time_Elapse,BUILDINGS_CLEARED,FLOORS_CLEARED,AWAITING_PERC))D
我收到的错误是:
Msg 8167,16层,状态1,第72行清除的柱建筑物类型与UNPIVOT列表中指定的其他柱类型冲突
将所有列置于同一数据类型将允许您使用UNPIVOT语句 样本数据 发行复制 这使得: 等待_PERC的列的类型与UNPIVOT列表中指定的其他列的类型冲突 解决方案 在取消激活之前,将所有列设置为相同的数据类型我使用了NVARCHA10,因为您没有包含表定义
with cte as
(
select TIME_ELAPSE,
BUILDINGS_CLEARED,
FLOORS_CLEARED,
convert(nvarchar(10), AWAITING_PERC) as AWAITING_PERC -- align data types
from test2
)
SELECT NAME, VALUE
FROM cte
UNPIVOT(VALUE FOR NAME IN (TIME_ELAPSE, BUILDINGS_CLEARED, FLOORS_CLEARED, AWAITING_PERC)) D
结果
要查看正在运行的内容。请仅标记您正在使用的SQL Server。您标记了4个看起来不太可能的不同版本。还有,你尝试了什么,为什么不适合你?我想回答很多人的问题可能会有帮助。我尝试了union all并获得了一个输出,但我需要在unpivot查询功能中使用它,所以请更正我用于清除标记的查询库,看起来是时候升级到。你的问题包括你的个人尝试。您是否尝试过使用关键字?选择名称,从TEMP\u DRILLUP\u SUMMARY UNPIVOTVALUE中选择名称随时间推移的值,清除建筑物,清除楼层,等待百分比另一种方法是交叉应用值转换nvarchar10,等待百分比,然后您不需要CTE
SELECT NAME, VALUE
FROM test2
UNPIVOT(VALUE FOR NAME IN (Time_Elapse, BUILDINGS_CLEARED, FLOORS_CLEARED, AWAITING_PERC)) D
with cte as
(
select TIME_ELAPSE,
BUILDINGS_CLEARED,
FLOORS_CLEARED,
convert(nvarchar(10), AWAITING_PERC) as AWAITING_PERC -- align data types
from test2
)
SELECT NAME, VALUE
FROM cte
UNPIVOT(VALUE FOR NAME IN (TIME_ELAPSE, BUILDINGS_CLEARED, FLOORS_CLEARED, AWAITING_PERC)) D
NAME VALUE
----------------- -------
TIME_ELAPSE 15h 21m
BUILDINGS_CLEARED 4/4
FLOORS_CLEARED 12/12
AWAITING_PERC 0