0

3 つのテーブル (JM、JCD、および JEO) があります。JM は PK JobNo を持つ親です。JCD と JEO は両方とも、FK の JobNo を持つ JM の子です。

以下は、私がクエリを書いている3つのテーブルからの望ましい出力テーブルです(ひどいフォーマットについて申し訳ありません-まだ画像を投稿できません:( )

JM

JobNo
------    
13088
13100

JCD

JobNo   CostType Amount
----------------------------    
13088   10  100
13088   10  105
13088   23  120
13088   24  130
13088   25  140
13088   26  50
13088   90  50
13100   25  5
13100   90  10

JEO

JobNo   CostType    Estimate
-------------------------------------    
13088   10  50
13088   11  60
13088   24  10
13088   30  100
13100   25  310

出力

JobNo   CostType Amount Estimate
------------------------------------
13088   10      100 0                   
13088   10  105 0                   
13088   23  120 0                   
13088   24  130 0                   
13088   25  140 0                   
13088   26  50  0                   
13088   10  0   50                  
13088   11  0   60                  
13088   24  0   10                  
13088   30  0   100                 
13100   25  5   0                   
13100   25  0   310                 

これを達成するためのコードについてのアイデアはありますか?

(結果のテーブルには、JCD.CostType が 90 に等しい行が含まれていないことに注意してください)。

私はこのようなことを試しましたが、うまくいきません:(

SELECT JM.JobNo, JCD.CostType, JCD.Amount, JEO.Estimate
FROM JM
FULL OUTER JOIN JCD ON JM.JobNo = JCD.JobNo
FULL OUTER JOIN JEO ON JM.JobNo = JEO.JobNo
WHERE JCD.CostType != 90
GROUP BY JM.JobNo, JCD.CostType, JCD.Amount, JEO.Estimate
4

1 に答える 1

0

これを試して

SELECT 
  JM.JobNo, JCD.CostType, JCD.Amount, 0 as Estimate
FROM 
  JM, JCD 
WHERE 
  JCD.CostType != 90 AND JM.JobNo = JDC.JobNo
GROUP BY 
  JM.JobNo, JCD.CostType, JCD.Amount 

UNION ALL

SELECT 
  JM.JobNo, JCD.CostType, 0 as Amount,  JEO.Estimate 
FROM 
  JM, JEO
WHERE 
  JM.JobNo = JEO.JobNo
GROUP BY 
  JM.JobNo, JCD.CostType, JCD.Estimate 
ORDER BY 
 JM.JobNo
于 2013-10-01T12:29:56.677 に答える