2

私は現在、他の誰かが書いた大きなアプリを維持しており、いくつかの大きな政府のレガシーシステムからデータをマイニングしています。基本的に、Tech Order から各部品番号を取得し、Fedlog テーブル内の一致する部品番号をカウントするグリッドビューを作成するには、単一のクエリ結果が必要です。何も見つからない場合は、「商用」テーブルを調べてください。既存のクエリは現在、Fedlog テーブルのみを検索し、次のように読み取ります。

select p.*,
 (select case when count(*) > 0 then 'Y' else 'N' end as SL
  from tbl_fedlog where [Part Number] = p.[Part Number]) as SL
from tbl_pcms p 
where  p.[Tech Order] = '0B-E0C-9' order by p.Figure, p.[Index], p.Indenture

「N」のときは、コマーシャル テーブルを見なければなりません。これについて最善の方法について何か提案をいただけますか?

4

3 に答える 3

1

「N」シナリオの場合、結果はどのようになりますか? 「Y」/「N」の別の回答ですか? その場合、「N」式を「商用」テーブルに対する別のスカラー クエリに単純に置き換えることができるはずです。

于 2012-05-31T16:53:59.573 に答える
0

パーツがまたはテーブル'Y'のいずれかに存在する場合などにロジックが表示される場合は、これらのテーブルを個別にグループ化および集約し、集約された結果セットを次のように(外部)結合してみてください。FedlogCommercial'N'tbl_pcms

SELECT
  p.*,
  CASE WHEN COALESCE(f.PartCount, c.PartCount) IS NULL THEN 'N' ELSE 'Y' END AS SL
FROM tbl_pcms p

  LEFT JOIN (
    SELECT
      [Part Number],
      COUNT(*) AS PartCount
    FROM tbl_fedlog
    GROUP BY [Part Number]
  ) f ON p.[Part Number] = f.[Part Number]

  LEFT JOIN (
    SELECT
      [Part Number],
      COUNT(*) AS PartCount
    FROM tbl_commercial
    GROUP BY [Part Number]
  ) c ON p.[Part Number] = c.[Part Number]

WHERE p.[Tech Order] = '0B-E0C-9'
ORDER BY
  p.Figure,
  p.[Index],
  p.Indenture
于 2012-06-01T05:46:07.560 に答える
0

以下はUNION ALL、Fedlog クエリと商用クエリの間で、それぞれの存在を確認するものです。

SELECT p.*
, SL = 'Y'
, part_count = (SELECT COUNT(*) FROM tbl_fedlog WHERE [Part Number] = p.[Part Number])
from tbl_pcms p 
where  p.[Tech Order] = '0B-E0C-9'
AND EXISTS(SELECT 1 FROM tbl_fedlog WHERE [Part Number] = p.[Part Number])

UNION ALL

SELECT p.*
, SL = 'Y'
, part_count = (SELECT COUNT(*) FROM tbl_commercial WHERE [Part Number] = p.[Part Number])
from tbl_pcms p 
where  p.[Tech Order] = '0B-E0C-9'
AND EXISTS(SELECT 1 FROM tbl_commercial WHERE [Part Number] = p.[Part Number])
AND NOT EXISTS(SELECT 1 FROM tbl_fedlog WHERE [Part Number] = p.[Part Number])

ただし、他の回答で言及されている「N」シナリオに対処するには、さらに情報が必要です。

于 2012-05-31T17:06:33.347 に答える