私は役に立たないと私の問題の解決策を探しています。私は特定のデータを選択するこのストアドプロシージャを持っています。私は列 'ステータス'を追加するためにそれを変更するように言われました。このストアドプロシージャは、一度に1つのコンポーネントの情報を選択します。だから、成分Aのために言う:上記のクエリの結果があるSQL- selectステートメント内のすべてのクエリ行の3番目の列の値を設定します
Declare @comp varchar(175)
Select CT.ComponentPart
CL.ComponentSupplier,
CS.ComponentSource
From ComponentParts CT
inner join ComponentSource CS on CS.ComponentID=CT.ComponentID
inner join ComponentSupplier CL on CL.ComponentTypeID=CS.ComponentTypeID
Where CT.ComponentPart = @Comp
今:
ComponentPart ComponentSupplier ComponentSource
CAF123 Supplier1 PLNT1
CAF123 Supplier2 PLNT2
CAF123 Supplier3 PLNT3
CAF123 Supplier4 PLNT1
私は別の列を追加するように頼まれた私は、以下のクエリと結果を持っていますPLNTのうちの1つが特定のリストにない場合、列値全体を「廃止」として設定し、その特定のコンポーネントのすべてのプラントがリストに含まれていれば、それを設定します列として「Ac息を呑む "。今度はテーブルを作ってそこにIDフィールド(列名:PlntID、PLNTSource)とともに植物リストを追加しました。
しかし、私は上記のクエリでそのテーブルに参加することを試みましたが、PLNTSourceフィールドがnullだった場合にselect句にcase文がありましたが、それ以外の場合は有効ですが、全体を設定することはできませんクエリのリストに基づいて "status"列を1つの値にするにはどうにかしますか?私が達成しようとしていますどのような結果
ComponentPart ComponentSupplier ComponentSource Status
CAF123 Supplier1 PLNT1 Active
CAF123 Supplier2 PLNT2 Obsolete
CAF123 Supplier3 PLNT3 Obsolete
CAF123 Supplier4 PLNT1 Active
:
ComponentPart ComponentSupplier ComponentSource Status
CAF123 Supplier1 PLNT1 Obsolete
CAF123 Supplier2 PLNT2 Obsolete
CAF123 Supplier3 PLNT3 Obsolete
CAF123 Supplier4 PLNT1 Obsolete
任意のアイデア私は何を取得していますと、
Declare @comp varchar(175)
Select CT.ComponentPart
CL.ComponentSupplier,
CS.ComponentSource,
CASE
WHEN CST.PLNtSource IS NULL
THEN 'obsolete'
else 'Active'
END as 'Status'
From ComponentParts CT
inner join ComponentSource CS on CS.ComponentID=CT.ComponentID
inner join ComponentSupplier CL on CL.ComponentTypeID=CS.ComponentTypeID
left join ComponentStat CST on CST.PlNtSource=CS.ComponentSource
Where CT.ComponentPart = @Comp
クエリ結果の下にありますか?
まあ、 'PLNtSource'はあなたが期待するところでは' NULL'であってはいけません。ソースデータを確認してください。 –
@TimBiegeleisenはい私は、PlntSourceのnull値が1つある場合に基づいて列全体のステータスを設定したいと考えているので、値の1つがnullの場合はnullがない場合はステータスの列全体を廃止に設定しますアクティブ –