构建特定的SQL查询

时间:2018-04-18 15:38:39

标签: php sql

请 - 帮助。 我无法处理构建特定查询。

这是查询(略微简化)

在这种情况下,

$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

1 个答案:

答案 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