在下面的代码中,当行是版税行,但没有LC时,我们会遇到一个问题,那么缺少LC将抹去此部分显示的金额:
CASE WHEN lctype='RO' THEN ROUND(SUM(totalland.olrqty),2) ELSE 0
END NAME(roytotal) COLHDG("Royalties") LEN(11,2),如果LCTYPE = "RO“,那么如果它= 'LC‘,那么不检查下一行,我该如何编码呢?因为这里发生的情况是,当LC时,此列to _ will和/olrqty)将被置零,但如果上一列是RO,我们不想置零。
SELECT olsrom, olorno, olline, olprdc, oldesc,
olrqty COLHDG("Qty Rec") LEN(11,0), WDATA(lctype),
SUM(olamou.olrqty) LEN(11,2) NAME(unit) COLHDG("Unit Price"),
CASE WHEN lctype='RO' THEN ROUND(SUM(totalland.olrqty),2) ELSE 0
END NAME(roytotal) COLHDG("Royalties") LEN(11,2),
CASE WHEN lctype='LC' THEN ROUND(SUM(totalland.olrqty),2) ELSE 0
END NAME(lctotal) COLHDG("Add-on Cost") LEN(11,2),
(roytotal+lctotal+unit) COLHDG("Landed Cost") NAME(totallc)
LEN(11,2) 发布于 2016-01-12 06:54:34
您可以使用LAG函数检查前一行中的值。
编辑(如果ParFait正确):
只需添加...
OR lctype = 'RO'...to下一行:
CASE WHEN lctype='LC' OR lctype = 'RO'
THEN ROUND(SUM(totalland.olrqty),2)
ELSE 0
END NAME(lctotal) COLHDG("Add-on Cost") LEN(11,2),https://stackoverflow.com/questions/34731618
复制相似问题