2017-04-09 2 views
1

これは私が持っているものですが、動作しますが、totalServicesSupp + totalTypeExamenの合計も必要です。私はそれを理解できないようです。どんな助けでも大歓迎です。SQL Oracleで2つのサブクエリの結果を一緒に追加する方法は?

SELECT 
    rendezvous.nordv, 
    rendezvous.nopatient, 
    rendezvous.noservicessupp, 
    servicessupplementaires.prix, 
    COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix AS totalservicessupp, 
    rendezvous.notypeexamen, 
    typeexamen.prix, 
    COUNT(rendezvous.notypeexamen) AS notypeexamen, 
    COUNT(rendezvous.notypeexamen) * typeexamen.prix AS totaltypeexamen 
FROM 
    rendezvous 
    FULL JOIN servicessupplementaires ON rendezvous.noservicessupp = servicessupplementaires.noservicessupp 
    FULL JOIN typeexamen ON rendezvous.notypeexamen = typeexamen.notypeexamen 
WHERE 
     rendezvous.noservicessupp >= 1 
    OR 
     rendezvous.notypeexamen >= 1 
GROUP BY 
    nopatient, 
    rendezvous.nopatient, 
    nordv, 
    servicessupplementaires.prix, 
    rendezvous.noservicessupp, 
    rendezvous.nordv, 
    servicessupplementaires.prix, 
    typeexamen.prix, 
    rendezvous.notypeexamen; 

totalServicesSupp + totalTypeExamenの合計を取得するにはどうすればよいですか?

ありがとうございました。

**** EDIT /////////////////////////////////////////////////////まだいくつかの助けを探して、ありがとう****

おかげで、このコードは素晴らしい仕事をしましたが、今ではその合計を計算したいと思います(10%または0.2%の20%...) (patient.CouvertureAssはこれが格納されている場所です)、別のテーブルにあります。

私はそれを実装する少し問題を抱えているが、ここで私が試したものです:

SELECT rendezvous.nordv, 
     rendezvous.nopatient, 
     rendezvous.noservicessupp, 
     servicessupplementaires.prix, 
     COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix AS totalservicessupp, 
     rendezvous.notypeexamen, 
     typeexamen.prix, 
     COUNT(rendezvous.notypeexamen) * typeexamen.prix AS totaltypeexamen, 
     COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix AS grandTotal, 
     COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix * (1 - patient.CouvertureAss) AS TotalPatient 
FROM rendezvous 
FULL JOIN servicessupplementaires ON rendezvous.noservicessupp = servicessupplementaires.noservicessupp 
FULL JOIN typeexamen ON rendezvous.notypeexamen = typeexamen.notypeexamen 
FULL JOIN patient ON rendezvous.nopatient = patient.nopatient 
WHERE rendezvous.noservicessupp >= 1 
    OR rendezvous.notypeexamen >= 1 
    OR rendezvous.nopatient >= 1 
GROUP BY nopatient, 
     rendezvous.nopatient, 
     nordv, 
     servicessupplementaires.prix, 
     rendezvous.noservicessupp, 
     rendezvous.nordv, 
     servicessupplementaires.prix, 
     typeexamen.prix, 
     rendezvous.notypeexamen, 
     patient.nopatient; 
+0

上記のコードの 'GROUP BY'には、' nopatient'、 'rendezvous.nopatient'、' nordv'、 'rendezvous.nordv'の参照はありますか?上記のコードを実行してテストしましたか? – toonice

+0

あなたの質問を変更して、これまでに開発されたステートメントによってすでに使用されているテーブルに「患者」がどのように関連しているかを示してください。 – toonice

答えて

0

てみてください...

SELECT rendezvous.nordv, 
     rendezvous.nopatient, 
     rendezvous.noservicessupp, 
     servicessupplementaires.prix, 
     COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix AS totalservicessupp, 
     rendezvous.notypeexamen, 
     typeexamen.prix, 
     COUNT(rendezvous.notypeexamen), 
     COUNT(rendezvous.notypeexamen) * typeexamen.prix AS totaltypeexamen, 
     COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix AS grandTotal 
FROM rendezvous 
FULL JOIN servicessupplementaires ON rendezvous.noservicessupp = servicessupplementaires.noservicessupp 
FULL JOIN typeexamen ON rendezvous.notypeexamen = typeexamen.notypeexamen 
WHERE rendezvous.noservicessupp >= 1 
    OR rendezvous.notypeexamen >= 1 
GROUP BY nopatient, 
     rendezvous.nopatient, 
     nordv, 
     servicessupplementaires.prix, 
     rendezvous.noservicessupp, 
     rendezvous.nordv, 
     servicessupplementaires.prix, 
     typeexamen.prix, 
     rendezvous.notypeexamen; 

このレベルであなたは `totalservicessupp + totalTypeExamen AS grandTotalを言うことができないことに注意してください、しかし、あなたを参照するすべてのクエリは、そうすることができるだろうしてください。ご質問やコメントがある場合たとえば、次はあなたの全体のリストconsitingを与えるだろう...

SELECT totalservicessupp + totalTypeExamen AS grandTotal 
FROM 
{ 
    SELECT rendezvous.nordv, 
      rendezvous.nopatient, 
      rendezvous.noservicessupp, 
      servicessupplementaires.prix, 
      COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix AS totalservicessupp, 
      rendezvous.notypeexamen, 
      typeexamen.prix, 
      COUNT(rendezvous.notypeexamen), 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix AS totaltypeexamen 
    FROM rendezvous 
    FULL JOIN servicessupplementaires ON rendezvous.noservicessupp = servicessupplementaires.noservicessupp 
    FULL JOIN typeexamen ON rendezvous.notypeexamen = typeexamen.notypeexamen 
    WHERE rendezvous.noservicessupp >= 1 
     OR rendezvous.notypeexamen >= 1 
    GROUP BY nopatient, 
      rendezvous.nopatient, 
      nordv, 
      servicessupplementaires.prix, 
      rendezvous.noservicessupp, 
      rendezvous.nordv, 
      servicessupplementaires.prix, 
      typeexamen.prix, 
      rendezvous.notypeexamen 
} tempTable; 

、それに応じてコメントを投稿すること自由に感じなさい。

+0

Enterを押すか、改行文字を追加するとコメントが完成します。 – toonice

+0

また、パーセンテージはどのように計算されますか?すなわち、どの数字を合計するべきかをどのように特定していますか?そして、それらの数字がいくつあるか、あるいはそれに対応する他のフィールドの合計でそれを分けますか?あなたの質問を答えに更新してください。 – toonice

+0

私は最初の質問に対する答えで質問を更新しましたが、百分率を表す10進数を掛け合わせた総計の計算には依然として助けが必要で、別のテーブルに保存されています。 –

0

派生テーブル(別名を持つサブクエリ)にあなたの質問にクエリを入れて、2つの数値を追加します。

select temp.* 
, totalServicesSupp + totalTypeExamen yourSum 
from (
sql from your question) temp 
関連する問題