1

私はかなり複雑なビューを持っています。クエリは、サブクエリも含む約14のテーブルからデータをプルします。結果は次のとおりです。[一意の識別子][オフィス][番号][説明][値][顧客][strjobid]..。

これで、この情報はViewTeamMembersというビューから取得されます。ViewTeamMembersビューは、一意の識別子ごとにすべてのチームメンバーを返します。チームメンバーはいるが「オーナー」がいない場合があります。ViewTeamMembers(現在実行中)からデータをプルし、所有者がいるかどうかを確認するためのクエリが必要です。所有者がいない場合は、結果セットに行を挿入する必要があります。この行には、所有者名が「割り当てられていません」と表示され、他のすべてのデータには他のチームメンバーからのデータが入力されます。どうすればこれを達成できますか?

例:

ViewTeamMembers
[unique123][Office1][555-5555][description][1,000][Frank][hourly]
[unique123][Office1][555-5555][description][1,000][Tom][Salary]
[unique123][Office1][555-5555][description][1,000][Brent][Hourly]

それに対してクエリを実行し、ジョブIDが「所有者」の人がいる行が存在するかどうかを確認する必要があります。存在しない場合は、自分の行をビューに挿入する必要があります。

[unique123][Office1][555-5555][description][1,000][Not Assigned][Owner]

したがって、クエリ結果セットを表示すると、次のようになります。

[unique123][Office1][555-5555][description][1,000][Frank][hourly]
[unique123][Office1][555-5555][description][1,000][Tom][Salary]
[unique123][Office1][555-5555][description][1,000][Brent][Hourly]
[unique123][Office1][555-5555][description][1,000][Not Assigned][Owner]

これは私の参加です

LEFT OUTER JOIN dbo.viewteammembers ON dbo.viewteammembers.guidrequirementid = dbo.tblrequirements.guidrequirementid

私は次のようなことをしなければならないと思います:

select * from viewteammembers case when not exists(select * from viewteammebers where strjobid = 'Owner') then 

しかし、これを機能させるための構文が何であるかはわかりません。

ありがとう!

4

2 に答える 2

1

使用するデータベースのタイプによっては、これを行うためのより良い方法があるかもしれませんが、このようなものでうまくいくはずです

   -- get dummy rows for all distinct identifiers that don't already have an owner
    select 
       distinct [Unique Identifier], [office], [number], [description], 
       1 as value, 
       'Not Assigned' as Customer, 
       'Owner' as strjobid from ViewTeamMembers vtm
    where 
       not exists (select 1 from ViewTeamMembers vtm2 
                   where vtm2.[Unique Identifier] = vtm.[Unique Identifier] 
                   and StrJobId = 'Owner')
    union all -- add everything already there
    select 
       [Unique Identifier], [office], [number], [description],
       [value], [customer], [strjobid]
    from ViewTeamMembers
于 2012-05-09T14:15:38.643 に答える
0

私があなたの要求を正しく理解しているなら、あなたは追加するものの表を持っていて、あなたはこれらのいくつかを削除したいと思っています。

次のクエリ構造はこれを実現します。

with toadd (
    select *
    from <things to add> tad
    where tad.guidrequirementid not in (select guidrequirementid from <view>)
)
insert into <final table>
    select * from toadd
于 2012-05-09T14:13:58.697 に答える