当前位置: 首页 > 面试题库 >

列与取消透视表列表中其他列的类型冲突

倪鸿禧
2023-03-14
问题内容

sys.[views]将重点放在关键值对上,以便与另一台服务器上的值进行比较以进行一致性测试。我遇到了一个返回错误的问题。

Msg 8167,第16级,状态1,第51行

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

询问:

SELECT
sourceUnpivoted.idServer,
sourceUnpivoted.sourceServerName,
sourceUnpivoted.name,
sourceUnpivoted.columnName,
sourceUnpivoted.columnValue
FROM (
SELECT 
CAST('1' AS VARCHAR(255)) AS idServer,
CAST('thisOne' AS VARCHAR(255)) AS sourceServerName,
CAST('theDatabase' AS VARCHAR(255)) AS sourceDatabaseName,
CAST(name AS VARCHAR(255)) AS name,
CAST(object_id AS VARCHAR(255)) AS object_id,
CAST(principal_id AS VARCHAR(255)) AS principal_id,
CAST(schema_id AS VARCHAR(255)) AS schema_id,
CAST(parent_object_id AS VARCHAR(255)) AS parent_object_id,
CAST(type AS VARCHAR(255)) AS type,
CAST(type_desc AS VARCHAR(255)) AS type_desc,
CAST(create_date AS VARCHAR(255)) AS create_date,
CAST(lock_escalation_desc AS VARCHAR(255)) AS lock_escalation_desc
...
FROM noc_test.dbo.stage_sysTables
) AS databaseTables
UNPIVOT (
columnValue FOR columnName IN (
object_id,
principal_id,
schema_id,
parent_object_id,
type,
type_desc,
create_date,
lock_escalation_desc
) 
) AS sourceUnpivoted

为什么这样不喜欢[type][type_desc][lock_escalation_desc]???
我也尝试过CONVERT(VARCHAR(255),type) AS type


问题答案:

这实际上是整理问题。我可以通过更改以下行来解决:

CAST([type] collate database_default AS VARCHAR(255)) AS [type], 
CAST(type_desc collate database_default AS VARCHAR(255)) AS type_desc, 
CAST(create_date AS VARCHAR(255)) AS create_date, 
CAST(lock_escalation_desc collate database_default AS VARCHAR(255)) AS lock_escalation_desc

特定的问题是name整理为Latin1_General_CI_AS,而您提到的其他3列则整理为Latin1_General_CI_AS_KS_WS(至少,在我的机器上,我不确定在使用不同默认排序规则的服务器/数据库上的情况)。



 类似资料:
  • 问题内容: 我试图取消有多个行和列的表。每行需要引出到具有特定列的2行,并且列名需要重命名,并且需要根据所选列添加新列! 我包括示例数据之前和之后以及用于设置数据的脚本。 我已经尝试过了,但是我无法通过第二列,而且我不确定如何添加带有特定文本的新列(可能是动态sql,但如果可能的话,尽量避免这种情况) 这是我尝试的开始,我们将不胜感激。 问题答案: 你只是保持不懈 并加入col列以滤除不匹配项

  • 我正在尝试保存数据透视表中多列的数据。但是,数据没有保存。下面是我正在做的事情: 表 刀片 如果我只使用checkbox来同步benefit_id和user_id,它就能工作。但如果添加额外的数据amount1和amount2,则不起作用。 控制器 事先谢谢你的帮助。

  • 问题内容: 我有一张有栏的桌子。数据就像 我想像下面这样安排它: 使用unpivot,我能够正确获取Name,Marks,但无法将源表中的列名获取到所需结果集中的列。 我怎样才能做到这一点? 到目前为止,我已经达到以下查询(获取名称,商标) 问题答案: 您的查询非常接近。您应该能够使用以下内容,其中包括最终选择列表中的内容: 参见带有演示的SQL Fiddle

  • 我有一个表,其中有列。数据就像

  • 我正在对地图执行firestore查询 没有人工作过,任何帮助都是感激的 谢谢你抽出时间

  • 我有这个对象结构,像 mi jasper 报告中的 Java Bean 一样使用, 具有相应和的所有类 当我在jasper报告中创建列表时,我这样定义“作业列表”: 现在我要创建另一个列表,“职责列表”放在“工作列表”上,问题是: 我如何定义数据源以获得要传递到中的相应作业? 我想象这样的事情: 但我不能让它工作