設定 MySQL 連線間隔年月的預設值
P粉924915787
P粉924915787 2024-02-25 18:16:02
0
1
299

我的查詢有問題。我有兩個表,我想加入它們以根據第一個表上的主鍵獲取結果,但我缺少第一個表中的 1 個資料。

這是我的小提琴

如您所見,我缺少第 1 個月的“xx3”

我嘗試更改左右連接,但結果仍然相同。 所以如你所見,我必須將coalesce(sum(b.sd_qty),0) 設為總計, 如果沒有qty,則將0 設置為預設值。

P粉924915787
P粉924915787

全部回覆(1)
P粉287726308

您也應該將表格交叉連接到不同的日期:

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 

或者,對於 MySql 8.0 ,使用遞歸 CTE 傳回您想要結果的所有月份的開始日期,可以交叉連接到表:

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 

查看演示

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!