嗨,我有一個查詢,我需要顯示用戶進行的交易,每天的數量,與歐元相當於每筆交易的。不能組SQL結果正確
查詢下面不這樣做(發現歐元相當於通過獲得的平均速率),而是因爲貨幣是不同的我通過總用貨幣得到的結果,而不是不能及的。什麼該查詢返回的是:
Numb Transactions,Date, userid,transaction_type,total value (per currency),eur_equiv 1 12/12, 2, test 5 10 2 12/12,2, test 2 2
,而我希望它返回
Numb Transactions,Date, userid,transaction_type,total value (per currency),eur_equiv 1 12/12, 2, test 7 12
查詢如下所示
SELECT COUNT(DISTINCT(ot.ID)) AS 'TRANSACTION COUNTER'
,CONVERT(VARCHAR(10) ,ot.CREATED_ON ,103) AS [DD/MM/YYYY]
,lad.ci
,ot.TRA_TYPE
,c.C_CODE
,CASE
WHEN op.CURRENCY_ID='CURRENCY-002' THEN SUM(CAST(op.IT_AMOUNT AS MONEY))
/(
SELECT AVG(CAST(cr.B_RATE AS MONEY)) AS AVG_RATE
FROM C_RATE cr
WHERE cr.CURRENCY_ID = 'CURRENCY-002'
)
WHEN op.CURRENCY_ID='-CURRENCY-005' THEN SUM(CAST(op.IT_AMOUNT AS MONEY))
/(
SELECT AVG(CAST(cr.B_RATE AS MONEY)) AS AVG_RATE
FROM C_RATE cr
WHERE cr.CURRENCY_ID = 'CURRENCY-005'
)
WHEN op.CURRENCY_ID='CURRENCY-006' THEN SUM(CAST(op.IT_AMOUNT AS MONEY))
/(
SELECT AVG(CAST(cr.B_RATE AS MONEY)) AS AVG_RATE
FROM C_RATE cr
WHERE cr.CURRENCY_ID = 'CURRENCY-006'
)
ELSE '0'
END AS EUR_EQUIVAL
FROM TRANSACTION ot
INNER JOIN PAYMENT op
ON op.ID = ot.ID
INNER JOIN CURRENCY c
ON op.CURRENCY_ID = c.ID
INNER JOIN ACCOUNT a
ON a.ID = ot.ACCOUNT_ID
INNER JOIN ACCOUNT_DETAIL lad
ON lad.A_NUMBER = a.A_NUMBER
INNER JOIN CUST cus
ON lad.CI = cus.CI
WHERE ot.TRA_TYPE_ID IN ('INBANK-TYPE'
,'IN-AC-TYPE'
,'DOM-TRANS-TYPE')
AND ot.STATUS_ID = 'COMPLETED'
AND cus.BRANCH IN ('123'
,'456'
,'789'
,'789')
GROUP BY
lad.CI
,CONVERT(VARCHAR(10) ,ot.CREATED_ON ,103)
,c.C_CODE
,op.CURRENCY_ID
,ot.TRAN_TYPE_ID
HAVING SUM(CAST(op.IT_AMOUNT AS MONEY))>'250000.00'
ORDER BY
CONVERT(VARCHAR(10) ,ot.CREATED_ON ,103) ASC
你就不能由添加另一組,並選擇MIN(麻木),日期,MIN(用戶名),MIN(TRANSACTION_TYPE),SUM(總值),SUM(eur_equiv) – 2011-03-02 09:07:58
試圖通過SUM來GOUP (CAST(op.IT_AMOUNT AS MONEY),但我得到一個錯誤不能使用聚合或在使用的表達式 – andreas 2011-03-02 09:13:00
你是否包裝你的當前選擇到另一個選擇做額外的組?只查看你當前和必需的輸出,全部你需要的是MIN(Numb Transactions)和兩個金額的總和。 – 2011-03-02 09:34:19