Questions tagged «unpivot»

2
为什么在使用UNPIVOT时SQL Server要求数据类型长度相同?
将UNPIVOT功能应用于未规范化的数据时,SQL Server要求数据类型和长度相同。我知道为什么数据类型必须相同,但是为什么UNPIVOT要求长度相同? 假设我有以下示例数据需要取消透视: CREATE TABLE People ( PersonId int, Firstname varchar(50), Lastname varchar(25) ) INSERT INTO People VALUES (1, 'Jim', 'Smith'); INSERT INTO People VALUES (2, 'Jane', 'Jones'); INSERT INTO People VALUES (3, 'Bob', 'Unicorn'); 如果我尝试取消Firstname和的Lastname列,则类似于: select PersonId, ColumnName, Value from People unpivot ( Value FOR ColumnName in (FirstName, LastName) …

1
如何防止UNPIVOT转换为UNION ALL?
我有一个稍微复杂的Oracle查询,大约需要半个小时才能完成。如果我执行查询的慢速部分并单独运行它,它将在几秒钟内完成。这是隔离查询的SQL Monitor报告的屏幕截图: 作为完整查询的一部分运行时,这是相同的逻辑: 颜色与两个屏幕截图中的相同表格相对应。对于慢速查询,Oracle MERGE JOIN在的两个表中没有相等条件的表之间执行JOIN。结果,不必要地处理了大约1.5亿个中间行。 我可以通过查询提示或重写来解决此问题,但我想尽可能多地了解根本原因,以便将来避免该问题并可能向Oracle提交错误报告。每次我得到错误的计划UNPIVOT时,查询文本中的内容都会转换为UNION ALL计划中的一个。为了进一步调查,我想阻止查询转换的发生。我无法找到此转换的名称。我也无法找到阻止它的查询提示或下划线参数。我正在开发服务器上进行测试,因此一切正常。 有什么我可以做,以防止的查询转换UNPIVOT到UNION ALL?我使用的是Oracle 12.1.0.2。 由于IP原因,我无法共享查询,表名或数据。我无法提出一个简单的复制品。话虽如此,我仍不清楚为什么需要这些信息来回答这个问题。这是UNPIVOT查询以及与UNION ALL相同的查询的示例。

1
如何在UNPIVOT(循环连接)中使用批处理模式?
我有以下形式的查询: SELECT ... FROM ColumnstoreTable cs CROSS APPLY ( SELECT * FROM (VALUES ('A', cs.DataA) , ('B', cs.DataB) , ('C', cs.DataC) ) x(Col0, Col1) ) someValues 这将从Columnstore支持的子查询(ColumnstoreTable)中获取每一行,并将这些行相乘。这本质上是一个UNPIVOT。实际查询大于此。查询的这一部分将用于其他处理。 这里的问题是将其CROSS APPLY实现为循环连接,这是一个合理的选择。不幸的是,循环连接不支持批处理模式。 查询的这一部分对性能非常重要,我怀疑以批处理模式运行它可能对性能非常有益。 如何重写此查询,以便不退出批处理模式? 我确实尝试使用临时表代替VALUES,但这并没有改变没有哈希连接的相等连接条件的事实。

1
动态将列名传递给UNPIVOT
我有一个包含以下数据的表 First Second Third Fourth Fifth Sixth 2013-08-20 2013-08-21 2013-08-22 2013-08-23 2013-08-24 2013-08-25 并使用 UNPIVOT SELECT Data ,DATENAME(DW, Data) AS DayName FROM Cal UNPIVOT(Data FOR D IN ( First, Second, Third, Fourth, Fifth, Sixth )) AS unpvt 我得到以下结果 Data DayName 2013-08-20 Tuesday 2013-08-21 Wednesday 2013-08-22 Thursday 2013-08-23 Friday 2013-08-24 Saturday …

1
为什么UNPIVOT在兼容级别80 DB上工作?
我正在尝试在兼容级别80上运行的SQL Server 2008 SP3数据库上使用UNPIVOT提取数据。这应该意味着UNPIVOT无法正常工作,但在某些情况下,它确实可以正常工作... 作品: 形式的独立SELECT查询: SELECT...FROM...UNPIVOT...WHERE...GROUP BY 不起作用: 同一查询,位于LEFT JOIN ()同一服务器内不同数据库的其他表上。全部处于兼容级别80。 我收到通常的错误消息: Msg 325, Level 15, State 1, Line 165 Incorrect syntax near 'UNPIVOT'. You may need to set the compatibility level of the current database to a higher value to enable this feature. See help for the SET …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.