Tetapkan nilai lalai untuk selang tahun dan bulan sambungan MySQL
P粉924915787
P粉924915787 2024-02-25 18:16:02
0
1
341

Ada masalah dengan pertanyaan saya. Saya mempunyai dua jadual dan saya mahu menyertainya untuk mendapatkan hasil berdasarkan kunci utama pada jadual pertama, tetapi saya kehilangan 1 keping data daripada jadual pertama.

Ini biola saya

Seperti yang anda lihat, saya kehilangan "xx3" untuk bulan 1

Saya cuba menukar sambungan kiri dan kanan tetapi hasilnya masih sama. Jadi seperti yang anda lihat, saya perlu menetapkan coalesce(sum(b.sd_qty),0) 设置为总计, 如果没有 qty,则将 0 kepada nilai lalai.

P粉924915787
P粉924915787

membalas semua(1)
P粉287726308

Anda juga harus silang menyertai jadual ke tarikh yang berbeza:

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 

Sebagai alternatif, untuk MySql 8.0+, gunakan CTE rekursif untuk mengembalikan tarikh mula semua bulan yang anda inginkan hasilnya, yang boleh dicantum silang ke jadual:

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 

Lihat Demo.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan