你好我的sql server查询有问题,我的问题是在列调用TotaleCap,我的问题是TotaleCap应该是QuantitàforCostoUnitario的结果但是账单没有回来,你能帮帮我吗?谢谢
QUERY:
DECLARE @T AS TABLE (Descrizione VARCHAR(5000), Totale MONEY, DescrizioneEstesa VARCHAR(5000), Immagine VARCHAR(5000), CostoUnitario MONEY, Quantita MONEY, DescrizioneDis VARCHAR(5000)) INSERT INTO @T select Capitolo.Descrizione,(SottoCapitolo.Quantita * SottoCapitolo.CostoUnitario) as Totale, SottoCapitolo.DescrizioneEstesa ,SottoCapitolo.Immagine,SottoCapitolo.CostoUnitario,SottoCapitolo.Quantita,SottoCapitolo.Descrizione as DescrizioneDis from Capitolo inner join SottoCapitolo on SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo where IdPreventivo = '" + IdPreventivo + "' SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY a.Descrizione order by a.Descrizione) = 1 THEN a.Descrizione ELSE '' END AS Descrizione,a.DescrizioneDis, round(a.CostoUnitario,0) as CostoUnitario, a.Quantita, round(a.Totale,0) as TotaleCap, a.DescrizioneEstesa, a.Immagine FROM( SELECT 1 AS d, ROW_NUMBER() OVER(PARTITION BY Descrizione order by Descrizione) AS r, Descrizione, Totale, DescrizioneDis, Immagine, CostoUnitario, Quantita, DescrizioneEstesa FROM @T UNION ALL SELECT 2, 0, Descrizione, SUM(Totale), '', '', '', '', '' FROM @T GROUP BY Descrizione ) AS a ORDER BY a.Descrizione, a.d
输出屏幕
答案 0 :(得分:0)
Il problema risiede nel fatto chehaigiàcalcolatoil“totale”prima di fare gli arrotondamenti。
Verifica con questo:
select 3.1 AS UNIT, 6 AS QTY, 3.1*6 AS TOT_ESATTO, ROUND(3.1,0) AS UNIT_ROUND, ROUND(3.1*6,0) AS TOT_ROUND, ROUND(3.1,0)*6 AS ERR