Définir la valeur par défaut pour l'intervalle de connexion MySQL, année et mois
P粉924915787
P粉924915787 2024-02-25 18:16:02
0
1
333

Il y a un problème avec ma requête. J'ai deux tables et je souhaite les rejoindre pour obtenir des résultats basés sur la clé primaire de la première table, mais il me manque 1 donnée de la première table.

C'est mon violon

Comme vous pouvez le voir, il me manque "xx3" pour le mois 1

J'ai essayé de changer les connexions gauche et droite mais toujours le même résultat. Comme vous pouvez le voir, je dois définir coalesce(sum(b.sd_qty),0) 设置为总计, 如果没有 qty,则将 0 sur la valeur par défaut.

P粉924915787
P粉924915787

répondre à tous(1)
P粉287726308

Vous devez également rejoindre la table à différentes dates :

SELECT a.item_code,
       COALESCE(SUM(b.sd_qty), 0) total,
       DATE_FORMAT(d.sd_date, '%m-%Y') month_year
FROM item a 
CROSS JOIN (
  SELECT DISTINCT sd_date 
  FROM sales_details 
  WHERE sd_date >= '2020-04-01' - INTERVAL 3 MONTH AND sd_date 

Alternativement, pour MySql 8.0+, utilisez un CTE récursif pour renvoyer les dates de début de tous les mois pour lesquels vous souhaitez le résultat, qui peuvent être joints au tableau :

WITH RECURSIVE dates AS (
  SELECT '2020-04-01' - INTERVAL 3 MONTH AS sd_date
  UNION ALL
  SELECT sd_date + INTERVAL 1 MONTH
  FROM dates 
  WHERE sd_date + INTERVAL 1 MONTH 

Voir la Démo.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal