2016-07-13 5 views
-1

契約と顧客の住所があるテーブルが1つあります。 各アドレスには、アドレスタイプ(契約または顧客) を宣言する1つの列と、契約番号または顧客番号を持つ別の列1つのテーブルでSELECTを選択した場合

この表を次のように選択します。 クエリパラメータ契約-アドレスが与えられた契約番号のために存在する場合は、この契約番号および対応する顧客数 customer-のためにも存在する場合、それらに を選択し、契約番号と対応する顧客番号

ですアドレスは選択しません

特定の契約番号の契約アドレスがない場合は、 の対応する顧客番号の顧客アドレスを選択します。

どうすればいいのかわかりません。 可能ですか?

BR エリック

編集2016年7月14日:

その後、上述の問題のいくつかの明確化。私は、各得意先のためのObjectType = 2とレコードだけを持ちたい、このテーブルの上の選択を行うと考える 次の表

CustomerID ObjectType ObjectID ADDR1 ADDR2 ADDR3 ..... 
10000  1   10000  ssdf 34543 dfgdf 
10000  1   10000  dfgg kjh  jkhjkh 
10000  2   23212  kljklj lkjlkj lkjlkj 
10000  2   23213  kljklj lkjlkj lkjlkj 
10001  1   10001  ssdf 34543 dfgdf 
10001  1   10001  dfgg kjh  jkhjkh 
10001  2   23212  kljklj lkjlkj lkjlkj 
10001  2   23213  kljklj lkjlkj lkjlkj 
10002  1   10001  ssdf 34543 dfgdf 
10002  1   10001  dfgg kjh  jkhjkh 

です。

ObjectType = 2のレコードセットが存在しない場合、selectはObjectType = 1のすべてのレコードセットを返す必要があります。

今は理解できると思います。

  • 得意= 10000 = 2
  • 得意= 10002 BR = 1

のObjectTypeためエリック2つのレコードを返す必要があり

+0

それはMSSQL-2012 –

+0

はい、これが可能であるためである上、MOなど#MaxObjectsに参加します。より詳細な回答が必要な場合は、詳細を提供する必要があります。ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

+0

関連スキーマを掲載する – Nikki9696

答えて

0
のObjectTypeための2つのレコードを返すべきである:例えば

- 1。クイックテンポラリテーブルを作成する

select CustomerID, max(ObjectType) into #MaxObjects from MyTable --Replace MyTable with whatever your table name is 

- 2そのテーブルに基づいてオリジナルを内部結合します。インナー

select t1.* from MyTable as t1 

はt1.CustomerID = mo.CustomerIDとt1.ObjectType = mo.ObjectType

関連する問題