请 - 帮助。 我无法处理构建特定查询。
这是查询(略微简化)
在这种情况下, $id
= id_user
SELECT
ARTIKELNR, ARTIKELTEXT, B_DATA,
margin = (SELECT TOP 1 SUM(BRNTZ / WERT*100 ) FROM BEW
WHERE b.ARTIKELNR = a.ARTIKELNR AND USR_NR = $id )
FROM BEW b
LEFT JOIN arb a ON b.ARTIKELNR = a.ARTIKELNR
WHERE b.USR_NR = $id
ORDER BY B_DATA DESC
我遇到margin
问题 - 它必须是SUM
两列,但是,如果可以看到,WERT
列不能等于0(因为BRNTZ / WERT
)。在数据库中,有时此列等于0或甚至null
。
我试过NULLIF
,但我无法构建它。我所做的最好的是:
SELECT TOP 1 SUM(BRNTZ / (WERT+0.001) * 100)...
其次,你能告诉我它是否一直很好吗?
我担心margin
可能来自另一个ARTIKELNR
。这完全是关于WHERE
陈述。
margin = (SELECT TOP 1 SUM(BRNTZ / WERT*100 ) FROM BEW
WHERE b.ARTIKELNR = ARTIKELNR AND BEW_LIEF_KUND_NR = $id )
修改
我是usinq SQL DB
当WERT == 0
然后SUM(BRNTZ / WERT*100 ) = 0
答案 0 :(得分:1)
IF()想要帮助:
SELECT
ARTIKELNR, ARTIKELTEXT, B_DATA,
IF(WERT>0,
(SELECT TOP 1 SUM(BRNTZ / WERT*100 ) FROM BEW
WHERE b.ARTIKELNR = a.ARTIKELNR AND USR_NR = $id ),
0
) as margin
FROM BEW b
LEFT JOIN arb a ON b.ARTIKELNR = a.ARTIKELNR
WHERE b.USR_NR = $id
ORDER BY B_DATA DESC