我有一张电子交易表。我想要

SELECT symbol, sum(shares), (price * shares) as cost, sum(total) as total
FROM transactions_orig
WHERE type = 'EQ' AND IF(transaction = 'dividend', shares <> 0, ??)
GROUP BY symbol
HAVING sum(shares) > 0


所以我只想在交易类型为股息且份额不等于0的情况下包括该行。这意味着股息已被再投资且未以现金支付。
如果交易等于股息并且股数等于零,则忽略该行。

我敢肯定,我在想这个。.但是我不知道。以下是一些示例数据

1. Dividend   EQ        LGCY        0        114.00   0.00
2. Credit     UNKNOWN               0          9.99   0.00
3. Bought     EQ        BBEP      100      -1978.99  19.69
4. Dividend   EQ        T           0        157.50   0.00
5. Dividend   EQ        T           4.42686 -157.50   0.00
6. Adjustment UNKNOWN               0        -90.00   0.00


我要排除的是第4行(支付股息)的行,但包括第5行(购买更多股份的行)

最佳答案

据我了解您的要求。您需要选择所有交易,但不包括零股股息。

从中格式化where子句

WHERE type = 'EQ' AND IF(transaction = 'dividend', shares <> 0, ??)




WHERE type = 'EQ' AND ((transaction = 'dividend' and shares <> 0) OR transaction <> 'dividend')

关于mysql - SQL如果没有,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22339215/

10-16 13:29