【问题标题】:unpivot result from temporary table从临时表中提取结果
【发布时间】:2017-05-31 11:01:19
【问题描述】:

我尝试在非透视结果集中获得结果,但对于更多列,我从未使用过这种技术。

我有一个临时表.. 有很多字段...但重点在下面列出。

SELECT 
    u.IDNode_u,
    l.lev_u
from #Slugs
unpivot
(
  IDNode_u  for node       in (IDNodo, IDNodoPadre, [IDNodoPadre-2], [IDNodoPadre-3], [IDNodoPadre-4], [IDNodoPadre-5], [IDNodoPadre-6])
) u
unpivot
(
  lev_u   for level   in (LivelloTop, [LivelloTop-1], [LivelloTop-2], [LivelloTop-3], [LivelloTop-4], [LivelloTop-5], [LivelloTop-6])
) l

只有第一个 unpivot 查询才可以,第二个添加我得到错误: “无法绑定多部分标识符“u.IDNodo_u”。”,但我认为绑定到第二个 unpivot。

有人能给我一些建议吗? 艾伦意大利。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。此外,请提供样本数据和所需结果。

标签: sql pivot field unpivot


【解决方案1】:

我认为最简单的反透视方法是使用cross apply

select u.IDNode_u, l.lev_u
from #slugs s cross apply
     (values (IDNodo), (IDNodoPadre), ([IDNodoPadre-2]), ([IDNodoPadre-3]),
             ([IDNodoPadre-4]), ([IDNodoPadre-5]), ([IDNodoPadre-6])
     ) u(IDNode_u) cross apply
     (values (LivelloTop), ([LivelloTop-1]), ([LivelloTop-2]),
             ([LivelloTop-3]), ([LivelloTop-4]), ([LivelloTop-5]),
             ([LivelloTop-6])
     ) l(lev_u);

编辑:

我想你打算:

select ul.IDNode_u, ul.lev_u
from #slugs s cross apply
     (values (IDNodo, LivelloTop),
             (IDNodoPadre, [LivelloTop-1]),
             ([IDNodoPadre-2], [LivelloTop-2]),
             ([IDNodoPadre-3], [LivelloTop-3]),
             ([IDNodoPadre-4], [LivelloTop-4]),
             ([IDNodoPadre-5], [LivelloTop-5]),
             ([IDNodoPadre-6], [LivelloTop-6])
     ) ul(IDNode_u, lev_u) ;

【讨论】:

  • 我尝试过,但我认为我必须使用 UNPIVOT....因为当我添加第三个字段时全部爆炸...100K 行...我必须了解多个枢轴字段返回.. .
  • @ACaps 。 . .你的嵌套 unpivot 会做同样的事情。我想你想要编辑后的答案。
  • 是的......戈登你是对的。谢谢你的支持!我已经用你的代码解决了...... unpivot 不是必需的 ALEN
猜你喜欢
  • 2013-12-23
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
相关资源
最近更新 更多