0

このコードは機能しますが、非常に「古風な」外観です。これを1つのクエリで選択してグループ化するためのより良い方法はありますか?基本的に、これは単一のヘッダーテーブル、ピックアップ用のサブヘッダーテーブル、ドロップオフ用のサブヘッダーテーブル、およびそれぞれの詳細テーブルを使用した一般的なセットアップです。

 select h.id
  ,h.col1 as Customer
  ,h.col2 as Req
  ,d.subid as DropId
  ,d.col1 as DropCity
  ,d.col2 as DropLoc
  ,dd.detid as DropDetailId
  ,dd.col1 as DropSpot
  ,dd.col2 as DropAWBorPackage
  ,NULL as PickupId
  ,NULL as PickUpCity
  ,NULL as PickUpLoc
  ,NULL as PickupDetailId
  ,NULL as PickupLoc
  ,NULL as PickupAWBorPackage
 from [scratch].GenericHeader h
   inner join [scratch].GenericSubHeader d on d.id = h.id
   inner join [scratch].GenericDetail dd on dd.id = h.id
     and dd.id = d.id
     and dd.subid = d.subid
 UNION ALL   
  select h.id
   ,h.col1 as Customer
   ,h.col2 as Req
   ,NULL as DropId
   ,NULL as DropCity
   ,NULL as DropLoc
   ,NULL as DropDetailId
   ,NULL as DropSpot
   ,NULL as AWBorPackage
   ,p.sub2id as PickupId
   ,p.col1 as PickUpCity
   ,p.col2 as PickUpLoc
   ,pp.det2id as PickupDetailId
   ,pp.col1 as PickupLoc
   ,pp.col2 as PickupAWBorPackage
  from  [scratch].GenericHeader h
    inner join [scratch].GenericSubHeader2 p on p.id = h.id
    inner join [scratch].GenericDetail2 pp on pp.id = h.id
      and pp.id = p.id
      and pp.sub2id = p.sub2id
  order by Req,DropId,DropDetailId,PickupId,PickupDetailId
4

1 に答える 1

1

1つのSQLステートメントで同じデータを取得する方法はないと思います。2つのSQLクエリを作成することをお勧めします。1つはドロップオフデータ用で、もう1つはピックアップデータ用です。

于 2012-10-11T17:40:55.027 に答える