你好我写完这段代码后遇到了问题
select suma*(select top 1 [Enantis kursas]
from [išlaidos pajamos] isp
join Kursas as k on ISP.[valiutos trumpinys]=k.[valiutos trumpinys]
where k.[Kurso Laikas] between '2000-12-30' and (select laikas2
from [išlaidos pajamos]
where Aprašymo_Id=ISL.Aprašymo_Id)
and k.[valiutos trumpinys]=(select [valiutos trumpinys]
from [išlaidos pajamos]
where Aprašymo_Id=ISL.Aprašymo_Id)
order by [Kurso Laikas] desc) as suvienodinta_valiuta, tipas, narioID
from [išlaidos pajamos] ISL
join Tipas as T on T.Aprašymo_Id=ISL.Aprašymo_Id
where T.tipas='Paj' and ISL.laikas2 between '2013-01-01' AND '2013-12-31 23:59:59:999'
order by suvienodinta_valiuta
union
select
from [išlaidos pajamos]
和rezult是
suvienodinta_valiuta tipas narioID
160,004 Paj 2
200,00 Paj 1
414,336 Paj 2
500,00 Paj 2
nows我的proglem在这里我有多个suvienodinta valiuta与相同的narioID 但是我想总结一下,每一个narioID都只有1个valiue 我想要收到的例子
suvienodinta_valiuta tipas narioID
1074,34 Paj 2
200,00 Paj 1
最大的问题是我需要select ( select ....)
答案 0 :(得分:0)
我不明白最后一部分是什么
union
select
from [išlaidos pajamos]
你的陈述的正在做,因为它缺少选择列表。因此,我现在假设它不是您的查询的一部分,只与其余部分dal。在这种情况下,您应该使用sum
和group by
,如下所示:
将select
之后的第一个表达式包含在as suvienodinta_valiuta
中的sum()
之前,并在最终group by tipas, narioID
之前附加order by
:
select sum(suma*(select top 1 [Enantis kursas]
from [išlaidos pajamos] isp
join Kursas as k on ISP.[valiutos trumpinys]=k.[valiutos trumpinys]
where k.[Kurso Laikas] between '2000-12-30' and (select laikas2
from [išlaidos pajamos]
where Aprašymo_Id=ISL.Aprašymo_Id)
and k.[valiutos trumpinys]=(select [valiutos trumpinys]
from [išlaidos pajamos]
where Aprašymo_Id=ISL.Aprašymo_Id)
order by [Kurso Laikas] desc)) as suvienodinta_valiuta, tipas, narioID
from [išlaidos pajamos] ISL
join Tipas as T on T.Aprašymo_Id=ISL.Aprašymo_Id
where T.tipas='Paj' and ISL.laikas2 between '2013-01-01' AND '2013-12-31 23:59:59:999'
group by tipas, narioID
order by suvienodinta_valiuta