在mysql中提取当年的发票数量

时间:2021-04-30 14:21:34

标签: mysql group-by

大家早上好。 我要疯了 我需要提取每个客户当年的发票数量。
在我的表 tbl_preventivi 中,我有客户字段 anagrafica_id 和发票日期字段 date_prev
这是我的代码。

$anno = date('Y');    
SELECT tbl_preventivi.anagrafica_id, Count(tbl_preventivi.preventivo_id) AS totale
    FROM tbl_preventivi
    GROUP BY tbl_preventivi.anagrafica_id, Year(tbl_preventivi.data_prev)
    HAVING ((Year(tbl_preventivi.data_prev) = ".$anno.") AND (tbl_preventivi.anagrafica_id=".$_GET['anagrafica_id']."))

我确信在我所做的测试中,结果必须是 1,而不是查询为空。 如果我删除 (Year(tbl_preventivi.data_prev) = ".$anno.") AND 查询有效并返回 6(这是前几年的发票数量)。 我哪里错了?

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是:

SELECT p.`anagrafica_id`,
       COUNT(p.`preventivo_id`) as `totale`
  FROM `tbl_preventivi` p
 WHERE p.`anagrafica_id` = 12345 and YEAR(p.`data_prev`) = 9999
 GROUP BY p.`anagrafica_id`;
<块引用>

注意: 12345 应替换为经过清理的客户编号,9999 应替换为经过清理且符合逻辑的年份。准备好的语句在这里是您的朋友。

如果您希望查看某个客户所有年份的所有发票,您可以这样做:

SELECT p.`anagrafica_id`,
       YEAR(p.`data_prev`) as `year`,
       COUNT(p.`preventivo_id`) as `totale`
  FROM `tbl_preventivi` p
 WHERE p.`anagrafica_id` = 12345
 GROUP BY p.`anagrafica_id`, `year`
 ORDER BY `year` DESC;

同样,请务必清理您的输入。用 Fox Mulder 的名言:不要相信任何人。

相关问题