- 论坛徽章:
- 0
|
本帖最后由 jxfnew 于 2010-03-08 20:17 编辑
pf文件:
cstzlga的定義為:
Seq Field File Type Length Scale
LAPN CSTZLGA CHARACTER-O 15
LACPN CSTZLGA CHARACTER-O 15
LAQTY CSTZLGA DECIMAL 15 7
LAUDAT CSTZLGA DECIMAL 8
cstzlgb的定義:
Seq Field File Type Length Scale
LBCPN CSTZLGB CHARACTER-O 15
LBCOST CSTZLGB DECIMAL 15 7
LBLCST CSTZLGB DECIMAL 15 7
LBUDAT CSTZLGB DECIMAL 8
在as400上strsql:
用select LAQTY *
(SELECT LBCOST FROM Y2CHAUSF/CSTZLGB c WHERE LBCPN = A.lacpn AND
c.LBUDAT = (SELECT MAX( LBUDAT ) FROM Y2CHAUSF/CSTZLGB d WHERE
c.LBCPN = d.LBCPN AND LBUDAT <= 20081209)) as amt
from y2chausf/cstzlga a where lapn = 'QFE0014X000X004'
and laudat =
(SELECT max( LAUDAT ) FROM Y2CHAUSF/CSTZLGa b WHERE a.LAPN = b.lapn
and LAUDAT <= 20081209 )
能正确取出所行资料并且均有非空的数值.
select sum(round( LAQTY *
(SELECT LBCOST FROM Y2CHAUSF/CSTZLGB c WHERE LBCPN = A.lacpn AND
c.LBUDAT = (SELECT MAX( LBUDAT ) FROM Y2CHAUSF/CSTZLGB d WHERE
c.LBCPN = d.LBCPN AND LBUDAT <= 20081209)) ,7)) as amt
from y2chausf/cstzlga a where lapn = 'QFE0014X000X004'
and laudat =
(SELECT max( LAUDAT ) FROM Y2CHAUSF/CSTZLGa b WHERE a.LAPN = b.lapn
and LAUDAT <= 20081209 )
結果為:
AMT
2.84710870000000
而去掉round後
select sum( LAQTY *
(SELECT LBCOST FROM Y2CHAUSF/CSTZLGB c WHERE LBCPN = A.lacpn AND
c.LBUDAT = (SELECT MAX( LBUDAT ) FROM Y2CHAUSF/CSTZLGB d WHERE
c.LBCPN = d.LBCPN AND LBUDAT <= 20081209))) as amt
from y2chausf/cstzlga a where lapn = 'QFE0014X000X004'
and laudat =
(SELECT max( LAUDAT ) FROM Y2CHAUSF/CSTZLGa b WHERE a.LAPN = b.lapn
and LAUDAT <= 20081209 )
的結果變為空值:
AMT
-
为何会这样??
多谢!! |
|