提问人:Ichichaa 提问时间:5/31/2023 最后编辑:Ichichaa 更新时间:5/31/2023 访问量:76
SQL 中的 If/Else 问题以获取有效值
If/Else problem in SQL to get valid value
问:
我想从 VBFA 表中获取 VBELN 字段。 但是为了获得有效值,我需要遵循以下逻辑:
Get VBFA where FPLTR = ZTB_Driver-FPLTR AND FPLNR = ZTB_Driver-FPLNR
SUM VBFA-RFWRT
IF VBFA-RFWRT = 0 THEN VBELN = space
ELSE VBELN = VBFA-VBELN
为了获得有效的 VBELN 值,我需要从 VBFA 表中获取行,其中 FPLNR 和 FPLTR 字段与表中的 FPLNT 和 FPLTR ZTB_DRIVER值相同。 VBLEN 可能有重复的行,所以我需要对 RFWRT 字段求和。 如果结果为 0,则 VBELN 将为空格/空。 如果结果不为 0,则 VBELN 值与 VBFA-VBELN 中显示的值相同。
对于此逻辑:
Get VBFA where FPLTR = ZTB_Driver-FPLTR AND FPLNR = ZTB_Driver-FPLNR
我已经这样做了:
SELECT * FROM VBFA a
JOIN ZTB_Driver b ON a.FPLTR = b.FPLTR AND a.FPLNR = b.FPLNR
但是,我对这个逻辑有困难:
SUM VBFA-RFWRT
IF VBFA-RFWRT = 0 THEN VBELN = space
ELSE VBELN = VBFA-VBELN
在SQL查询中转换此逻辑的方法是什么? 我真的很感激任何意见。 谢谢!
解决!
SELECT c.VBELN,
CASE WHEN SUM(RFWRT) = 0 THEN ' '
ELSE VBELN
END AS VBELN_2
FROM (
SELECT a.* FROM VBFA a
JOIN ZTB_Driver b ON a.FPLTR = b.FPLTR AND a.FPLNR = b.FPLNR) c
GROUP BY c.VBELN
答: 暂无答案
上一个:我们可以合并为一列吗
评论