2014-04-21 32 views
0

我有一份聲明中,像這樣:SQLite的算術

SELECT f.column1, 0.9*sum(s.column2) FROM first f, second s WHERE f.colum1 = f.column1*0.9*sum(s.colum2) 

基本上就是我想要做的就是乘從「第一」表中的值在列1,由0.9 *總和(S .colum2)即第二個表的第2列中的值的總和乘以0.9。

我測試了自己的總和* 0.9部分,它的工作原理,但它不能在WHERE條件後工作。任何人都可以告訴我這樣做的正確方法嗎?現在,我得到的錯誤是:

could not prepare statement (1 misuse of aggregate: sum()) 

回答

1

你的答案可以使用HAVING代替WHERE

WITH f AS (SELECT 12 AS column1 FROM dual), 
    s AS (SELECT 33 AS column2 FROM dual) 
SELECT f.column1, 0.9*SUM(s.column2) FROM f,s 
HAVING f.column1 = f.column1*0.9*SUM(s.column2); 

但是,什麼是聲明WHERE f.colum1 = f.column1*0.9*sum(s.colum2)的想法?

它比較第一列中的行中的值,並將它們與相同的值乘以0.9*SUM(s.colum2)進行比較。因此,如果0.9*SUM(s.colum2) != 1全部行,如果0.9*SUM(s.colum2) == 1,查詢將不返回任何內容。

+0

感謝您的回答,我最終發現它,併發布了我所做的。是的,我不確定我在做什麼,但我最終採取了不同的做法 – Mohd

0

我想通了最後,如果有人有興趣,我改變了代碼如下:

SELECT f.column1*0.9*sum(s.column2) FROM first f, second s 

而不是在WHERE條件做列間運算的,我只是列出什麼時候SELECT關鍵字後的列名,它工作正常