2016-11-16 9 views
0

私はSQLにそうではないと私には、Microsoft SQL Serverの取得したこのクエリの値をSQLの別のクエリの出力値に乗算するにはどうすればよいですか?

SELECT 
    tr.PolizzaID AS NumeroPolizza, 
    pfr.FondoID AS CodiceFondo, 
    '2016-09-30' AS dataRiferimentoPrezzo, 
    SUM(isnull(pre.impPre,0)+isnull(riv.impRiv,0)) AS quote, 
    SUM(isnull(pre.impPre,0)+isnull(riv.impRiv,0)) AS Controvalore 
FROM 
    TR_PrestazioneTotale tr WITH(nolock) 

    ............................................................ 
    ............................................................ 
    DO SOME JOIN OPERATIONS 
    ............................................................ 
    ............................................................ 

WHERE 
    tr.PolizzaID = 1234567890 
GROUP BY 
    tr.PolizzaID, 
    pfr.FondoID 
HAVING 
    SUM(ISNULL(pre.impPre, 0) + ISNULL(riv.impRiv, 0)) <> 0 

常にこのクエリの戻り単一の値にこのクエリに取り組んでいます。

あなたが前のクエリで選択された列の1はこの1つされて見ることができるように:数値(550058.8400のようなもの)である

SUM(ISNULL(pre.impPre, 0) + ISNULL(riv.impRiv, 0)) AS Controvalore 

います。常に単一の値また、この問合せの戻り

select Aliquota 
from TirAliquotaRamoI 
where DataElaborazione = '2016-09-30 00:00:00' 

私の問題は、私は、この他のクエリの出力のために、この

SUM(ISNULL(pre.impPre, 0) + ISNULL(riv.impRiv, 0)) 

値を乗算しなければならないということです。

だから、基本的に、最初のクエリのControvalore出力フィールドは、Aliquota乗じSUM(0)ISNULL(pre.impPre、0)+ ISNULL(riv.impRiv)の結果でなければなりません 2番目のクエリの出力値。

どうすればいいですか?

おかげで両方以来

+0

いいえGROUP BY句ですか? – jarlh

+0

なぜ参加しませんか? – sagi

+0

@jarlhはい私はGROUP BY句を持っています、元の投稿を編集しました – AndreaNobili

答えて

1

は、単一の結果を返す、あなたはおそらく...多分あなたのSELECT句のサブクエリに逃げることができます。私はそれがあなたの状況のた​​めに働くかもしれないそのaliquota名前によって推測していますが、それは本当に下のデータに依存します。とにかく、これは始めるのに適しています。

SELECT 
    tr.PolizzaID         AS NumeroPolizza, 
    pfr.FondoID         AS CodiceFondo, 
    '2016-09-30'         AS dataRiferimentoPrezzo, 
    SUM(isnull(pre.impPre,0)+isnull(riv.impRiv,0)) AS quote, 
    SUM(isnull(pre.impPre,0)+isnull(riv.impRiv,0)) * (select Aliquota from TirAliquotaRamoI where DataElaborazione = '2016-09-30 00:00:00') AS Controvalore 
FROM 
    TR_PrestazioneTotale tr WITH(nolock) 

    ............................................................ 
    ............................................................ 
    DO SOME JOIN OPERATIONS 
    ............................................................ 
    ............................................................ 

WHERE 
    tr.PolizzaID = 1234567890 
GROUP BY 
tr.PolizzaID , 
pfr.FondoID 
HAVING SUM(isnull(pre.impPre,0)+isnull(riv.impRiv,0)) <>0 
関連する問題