在下面的代码中,我们遇到一个问题,当行是一个专栏行,但没有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'那么请不要检查下一行。 ?正如这里发生的那样,这个列totalland / olrqty)在LC时会变为零,但如果之前是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)
答案 0 :(得分:1)
您可以使用LAG功能检查上一行中的值。
编辑(如果ParFait是对的):
只需添加...
OR lctype = 'RO'
...到下一行:
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),