gpt4 book ai didi

php - mysql datatable.net 行值总计无法正常工作

转载 作者:行者123 更新时间:2023-11-29 16:07:57 24 4
gpt4 key购买 nike

使用 Mysql,我需要计算给定行上的总值,我的尝试失败了,结果异常,一行工作正常,其他行没有显示总数据。此通话引用了 scaisEdge 之前接听的通话,谨致谢意。

mysql how to display values on one row for each portfolio, stock

我在输出中获取值,但仅获取一行的值,因此它的行为并不符合我的预期。

$rows = $wpdb->get_results("
select
t.Symbol AS Symbol
, t.Portfolio AS Portfolio
, max(Janx) AS Janx
, max(Febx) AS Febx
, max(Marx) AS Marx
... etc.
, max(Decx) AS Decx
, (
max(Janx)
+ max(Febx)
+ max(Decx)
) AS Total
from (
SELECT
s.symbol AS Symbol,
p.code AS Portfolio,
(case when ANY_VALUE(DATE_FORMAT(d.pdate,'%b')) = 'Jan' then
IFNULL(CEILING((SUM(IF(t.transaction_type='Buy',t.quantity,t.quantity
* -1)) * ANY_VALUE(d.dividend) ) / 100),0) end) AS Janx,
(case when ANY_VALUE(DATE_FORMAT(d.pdate,'%b')) = 'Feb' then

IFNULL(CEILING((SUM(IF(t.transaction_type='Buy',t.quantity,t.quantity *
-1)) * ANY_VALUE(d.dividend) ) / 100),0) end) AS Febx,
(case when ANY_VALUE(DATE_FORMAT(d.pdate,'%b')) = 'Mar' then
IFNULL(CEILING((SUM(IF(t.transaction_type='Buy',t.quantity,t.quantity * -1)) * ANY_VALUE(d.dividend) ) / 100),0) end) AS Marx,
... etc
(case when ANY_VALUE(DATE_FORMAT(d.pdate,'%b')) = 'Dec' then
IFNULL(CEILING((SUM(IF(t.transaction_type='Buy',t.quantity,t.quantity * -1)) * ANY_VALUE(d.dividend) ) / 100),0) end) AS Decx

FROM dm_transactions t
INNER JOIN dm_dividends d ON (d.stock_id = t.stock_id)
INNER JOIN dm_stocks s ON (s.id = t.stock_id)
INNER JOIN dm_portfolios p ON (t.portfolio_id = p.id)
WHERE ANY_VALUE(d.pdate) >= CURDATE()
AND
t.user_id >= IF($user_id=4,2,$user_id)
AND
t.user_id <= IF($user_id=4,3,$user_id)
GROUP BY s.symbol,d.pdate
) t
GROUP BY t.Symbol, t.Portfolio
... etc.

foreach ($rows as $row ){
echo "<tr>";
echo "<td>$row->Portfolio</td>";
echo "<td>$row->Symbol</td>";
echo "<td>$row->Janx</td>";
... etc.
echo "<td>$row->Decx</td>";
echo "<td>$row->Total</td>";

总计值没有正确求和,有些行没有显示总计值,当有数据时,我怀疑我的 SQL 查询一定不正确。我的报告的所有其他方面都有效。

希望这是我的一个简单错误。

提前非常感谢

科林

最佳答案

我的 IFNULL 表达式没有正确定位在 MySQL 语句中,修改后的 IFNULL 语句如下所示

  SELECT
ANY_VALUE(s.symbol) AS Symbol,
ANY_VALUE(p.code) AS Portfolio,
IFNULL((case when ANY_VALUE(DATE_FORMAT(d.pdate,'%b')) = 'Jan' then CEILING((SUM(IF(t.transaction_type='Buy',t.quantity,t.quantity * -1)) * ANY_VALUE(d.dividend) ) / 100) end),0) AS Janx,
IFNULL((case when ANY_VALUE(DATE_FORMAT(d.pdate,'%b')) = 'Feb' then CEILING((SUM(IF(t.transaction_type='Buy',t.quantity,t.quantity * -1)) * ANY_VALUE(d.dividend) ) / 100) end),0) AS Febx,

谢谢科林

关于php - mysql datatable.net 行值总计无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55554146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com