的某些相同的值在SQL的不止一个,我想所有的记录,但在列值RM
发生MCCU
twice..but我在的情况下,可以不显着,因为这两个值的杂项的值都不一样..
我怎么能做出是否MCCU
有一个以上的RM
,然后只选择那些在POSI
列和处于较高位置的一个专栏,将他们的两个数值加起来组合在一起。希望想法解决它。非常感谢你!
这是我的SQL语句
select * from Oclaimc Where cono='NP' and CLNO='7150000032'
的某些相同的值在SQL的不止一个,我想所有的记录,但在列值RM
发生MCCU
twice..but我在的情况下,可以不显着,因为这两个值的杂项的值都不一样..
我怎么能做出是否MCCU
有一个以上的RM
,然后只选择那些在POSI
列和处于较高位置的一个专栏,将他们的两个数值加起来组合在一起。希望想法解决它。非常感谢你!
这是我的SQL语句
select * from Oclaimc Where cono='NP' and CLNO='7150000032'
没有列名misc
在你的形象。我假设你需要总计gamntMisc
和gttlMisc
。
所以试试这个。需要时添加其他列。
select max(CONO) as CONO,max(CLNO) as CLNO,max(posi) as posi,MCCU,
sum(gamntMisc) as totalgamntMisc,sum(gttlMisc) as totalgttlMisc from Oclaimc
where cono='NP' and CLNO='7150000032'
group by mccu
注意:如果删除where子句,查询将失败。如果你需要这个结果对于cono
和clno
每个组合则by子句改变组 group by cono,clno,mccu
嗨..非常感谢你! 但我不是很明白,你能解释我,我欣赏它:) 1)cono和clno的最大功能意味着什么?因为当我谷歌最大功能,这意味着返回所选列的最大值。 2)为什么群由mccu是必要的?因为当我删除它时,查询无法运行。 真正赞赏。 – Jan
所以这个查询是由'mccu'分组的,因为你有3个不同的值,这就是你在输出中需要的值。按函数分组最重要的规则是,select语句中的列应该是按照子句划分的,否则它们应该使用任何聚合函数。现在即使'conc'和'clno'值对于每一组'mccu'都是相同的,SQL将不知道它们是否是。因此,使用Max可以让我们按规则绕过组并获得所需的结果。 – Utsav
你可以进一步谷歌'group by'并做一些案例研究来更好地理解它。 – Utsav
这可能会帮助:
select *
from oclaimc
where cono = 'NP'
and clno = '7150000032'
and mccu <> 'RM'
union
select *
from (select *
from oclaimc
where cono = 'NP'
and clno = '7150000032'
and mccu = 'RM'
order by posi)
where rownum = 1
您可以编辑的问题,并添加想要的结果呢? (并标记使用的dbms ...) – jarlh
@jarlh - 您可以通过附加图像进行假设。 – pedram
@curiousguy,我不知道是什么工具... – jarlh