我正在開發一個需要嵌入式數據庫的應用程序,所以我使用MYSQL來設計它,並創建了一個SQL語句在那裏工作。但是,在轉移到嵌入式數據庫(即超SQL(HSQLDB))時,我的查詢不再有效。這似乎與我在select中必須與Group By匹配的參數數量有關,但是如果我去添加它們,它將保持數據未分組,並且這對我不起作用。用分組方式選擇不能正常工作
下面是該查詢:
我有兩個表(GFS和人聯黨),與同列,所不同的是在行爲和一個擁有人口更多的列了另外一個。
SELECT gfs.GFSAccount, gfs.GLAccount,
CASE
WHEN gfs.ICPartner = "" THEN '[ICP_NONE]'
WHEN gfs.ICPartner <> "" THEN gfs.ICPartner
END AS ICPartner,
CASE
WHEN gfs.PPESupplementalData <> '' THEN gfs.PPESupplementalData
WHEN gfs.PPESupplementalData = '' THEN '[NONE]'
END AS SupplementalData,
CASE
WHEN gfs.AccountType = 'SALES AND COS' THEN gfs.PCode
WHEN gfs.AccountType = 'COO' THEN 'COO'
WHEN gfs.AccountType = 'OTHERS' THEN gfs.Business
END AS Business,
Round(Sum(gfs.Amount), 2) AS Amount
FROM gfs, supp
WHERE gfs.GLAccount <> supp.GLAccount
GROUP BY gfs.GFSAccount,
CASE WHEN gfs.ICPartnerSplit = 1 THEN gfs.ICPartner END
UNION
SELECT GFSAccount, GLAccount,
CASE
WHEN ICPartner = "" THEN '[ICP_NONE]'
WHEN ICPartner <> "" THEN ICPartner
END AS ICPartner,
CASE
WHEN SuppData <> '' THEN SuppData
WHEN SuppData = '' THEN '[NONE]'
END AS SupplementalData,
Business, Round(Sum(Amount), 2) AS Amount
FROM supp
ORDER BY GFSAccount;
有很大量的轉換空白和固定領域,但主要問題是與3組由(2內的每一個選擇,一個在盡頭),它沒有讓我做到這一點。
(我知道查詢本身是不是最好的創建或優化,但我從一個數據庫時已經出來,我有點生鏽)
有任何建議你們可以爲了使它在HSQLDB(或另一個不是MySQL的數據庫)中工作對我做?
考慮編輯您的問題和格式化您的查詢。 –
「不再工作」不是您可以提供的最佳信息。解釋查詢應該完成的操作總是有幫助的。 –
看起來像是另一個MySQL的流氓執行「GROUP BY」咬人你的案例。在標準SQL中,所有列(不是功能依賴的)都不在GROUP BY子句中列出,必須是聚合的一部分。 MySQL只是從每個組中挑選一個任意的行。 Postgres遵守標準(主要是),主鍵分組覆蓋了表的其餘部分,但沒有觀察到其他函數依賴關係。相關答案[here](http://stackoverflow.com/a/8440512/939860)或[here](http://stackoverflow.com/a/18993394/939860)。 –