2016-11-16 15 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 

該查詢返回總是一個單值上。

正如你可以看到選擇的先前查詢的一列是這一個:

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

這是一個數值(像550058.8400)。

我的問題是,我要乘這個

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

值這個其他查詢的輸出:

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

而且該查詢返回總是一個單個值

因此,基本上,在第一查詢的Controvalore輸出字段必須SUM的結果(ISNULL(pre.impPre,0)+ ISNULL(riv.impRiv,0))乘以Aliquota第二個查詢的輸出值。

我該怎麼辦?

感謝

+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 
相關問題