我在DB2數據庫中有一個表,其中包含我需要檢索的客戶信息以及表中特定列的重複次數。這是一個數據的例子。使用COUNT和GROUP BY的DB2 SELECT語句
CUSTOMERID | CUSTOMERGROUP | PRODUCTID | PRODUCTNAME | ALERTNAME | ALERTLEVEL | XXX | YYY | ZZZ
12345 ABC 987654 ProductA Alert1 4 More Data Here
客戶由CustomerID和CustomerGroup列標識。他們可以擁有任意數量的產品,並且這些產品可以獲得不同類型的警報(ProductA,ProductC和ProductQ都可以獲得Alert1)。我需要檢索每行的客戶信息以及客戶獲取特定警報名的次數。
在我們的舊版本的MySQL數據庫,這是不是太困難,因爲我會做這樣的事情
SELECT customerID, customerGroup, ProductID, ProductName, AlertName, count(AlertName), AlertLevel, more data....
FROM TABLE
WHERE customerID = XXX and customerGroup = YYY
GROUP BY alertname
ORDER BY AlertLevel, AlertName, ProductName
本集團並沒有包括在SELECT語句中的每一列,所以我會回來的客戶行其中包括客戶信息和他們收到特定警報的次數。
現在我們已經遷移到了DB2,我需要將SELECT中的每一列都放到GROUP BY中,這顯然使每一行都不同,因此無論是否存在警報名稱與該客戶的另一行匹配。
有沒有一種方法可以重新創建這種功能,而不需要對數據檢索方式進行重大改動?作爲前端開發人員,我有能力改變我在PHP端操作數據的方式,並且可以編寫SQL語句,但我無法改變數據存儲方式。
我有點驚訝的MySQL允許這樣的聲明,因爲它不是標準的SQL。事實證明,它可以通過MySQL擴展https://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html你可能想要仔細檢查你真正想要的是什麼,因爲我不喜歡聽到「所選擇的值是不確定的」 – Charles