跳至內容
Astera Technology

引號內數字為何對不上整數 SUM?

數值合計對數值目標,不用文字常值。

下載完整個案資料及參考答案 ↓

準備報表輸入

本例找合計四。INTEGER 欄有親和類型,但 SUM(qty) 運算不帶該欄親和性;對文字 '4' 不會像直接整數欄比較般轉換,須用數字 4。

以下記錄及報表規則均為原創假設。在新 SQLite 測試資料庫重做建表,預覽包含此小型例子每張表。

假設輸入:units
編號組代碼數量
1A2
2A2
3B4
下載可編輯 CSV ↓
完整建表及插入假設資料
CREATE TABLE units(id INTEGER PRIMARY KEY,group_code TEXT NOT NULL,qty INTEGER NOT NULL); INSERT INTO units VALUES(1,'A',2),(2,'A',2),(3,'B',4);

比較錯誤及更正結果

錯誤 SELECT:重現問題
SELECT group_code,SUM(qty) AS total_units FROM units GROUP BY group_code HAVING SUM(qty)='4' ORDER BY group_code;
錯誤查詢的逐行結果
查詢結果
沒有回傳資料(空結果)
下載可編輯 CSV ↓
更正 SELECT
SELECT group_code,SUM(qty) AS total_units FROM units GROUP BY group_code HAVING SUM(qty)=4 ORDER BY group_code;
更正查詢的逐行結果
組代碼合計單位
A4
B4
下載可編輯 CSV ↓

錯結果空,但 A=2+2、B=4。數值比較回兩組,聚合後把目標加引號可改意思。

用新副本測邊界

向 C 的 INTEGER qty 欄插文字 '4',欄親和性按數值存,數值合計篩選也回 C。

另開新資料庫重做原建表,才套下列改動及更正查詢。空結果在表內用已標明空結果文字表示,不是假資料行。

邊界改動及更正查詢
INSERT INTO units VALUES(4,'C','4');
SELECT group_code,SUM(qty) AS total_units FROM units GROUP BY group_code HAVING SUM(qty)=4 ORDER BY group_code;
邊界查詢的逐行結果
組代碼合計單位
A4
B4
C4
下載可編輯 CSV ↓

哪些原組符合真正數量四要求?

查看參考答案

A、B 合計都四,邊界加 C 後也符合,因欄位把四按數值存。

相關資源