2017-05-31 20 views
0

私はunpivot結果セットで結果を得ようとしますが、このテクニックは一度も使用していません。一時テーブルからunpivot結果

私は一時的なテーブルを持っています。多くのフィールドがありますが、以下のリストに注目してください。 「マルチパート識別子 『u.IDNodo_uが、私はにバインドされていると思います』バインドできませんでした。」:

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 

クエリが、私はエラーを得た第二の追加で、最初のアンピボットでokです2回目のアンピボット。

誰かが私に助言を与えることができますか? Alenイタリア。

+0

タグあなたの質問に:

私はあなたが意図すると思います。また、サンプルデータと望ましい結果を提供してください。 –

答えて

0

私はアンピボットする最も簡単な方法は、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); 

EDIT:あなたが使用しているデータベースと

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) ; 
+0

私はそれを試してみますが、私はUNPIVOTを使用しなければならないと思います....なぜなら、3番目のフィールドをすべて爆発させると... 100K行... 私は複数のピボットフィールドが返ってくることを理解しなければなりません... – ACaps

+0

@ACaps。 。 。ネストされたピボットは同じことをするでしょう。私はあなたが編集された答えをしたいと思う。 –

+0

はい...ゴードンあなたが正しいです。 ご協力いただきありがとうございます。 コードで解決しました...アンピボットは不要です ALEN – ACaps

関連する問題