0

私は2つのテーブルを持っています。マネージャーの名前と、テーブル 1 (階層を持つ) からデータを挿入する null 列を持つもの。挿入部分を考えましたが、正確な名前を使用する代わりに、変数を使用してテーブル 2 からテーブル 1 に名前を渡したいので、動的です。これを行うことができるかどうか、およびこれを行う方法を教えてください。

UPDATE direct_manager_report 
Set Manager_level_number = 
(Select 'Manager_Level_0' from manager_hierarchy where level_0_manager_name = 'ABC'
UNION
Select 'Manager_Level_1' from manager_hierarchy where level_0_manager_name < > 'ABC' AND level_1_manager_name = 'ABC'
UNION
Select 'Manager_Level_2' from manager_hierarchy where level_1_manager_name < > 'ABC' AND level_2_manager_name = 'ABC'
UNION
Select 'Manager_Level_3' from manager_hierarchy where level_2_manager_name < > 'ABC' AND level_3_manager_name = 'ABC'
)
Where full_name = 'ABC'
4

1 に答える 1

0

どこでも「ABC」をハードコードする必要があることを除いて、クエリが望ましい結果を返すと仮定すると、マネージャーの名前を入れる場所が1つだけ必要な場合は、これでうまくいくはずです。

DECLARE @man_name AS VARCHAR(50) = 'ABC'
UPDATE direct_manager_report 
Set Manager_level_number = 
(Select 'Manager_Level_0' from manager_hierarchy where level_0_manager_name = @man_name
UNION
Select 'Manager_Level_1' from manager_hierarchy where level_0_manager_name < > @man_name AND level_1_manager_name = @man_name
UNION
Select 'Manager_Level_2' from manager_hierarchy where level_1_manager_name < > @man_name AND level_2_manager_name = @man_name
UNION
Select 'Manager_Level_3' from manager_hierarchy where level_2_manager_name < > @man_name AND level_3_manager_name = @man_name
)
Where full_name = @man_name

select ステートメントを使用して @man_name 変数を設定できます。 DECLARE @man_name AS VARCHAR(50) SET @man_name = (SELECT FROM)

多数の名前をループしたい場合は、カーソルを使用するか、変数を忘れて更新で JOIN を使用することができます。

于 2013-06-04T19:20:40.687 に答える