2016-02-08 18 views
1

在sql中幾乎是一個完整的新手,試圖找到我的解決方法 - 我有一張來自會計軟件的交易數據表,顯示日期(以dd-mm-yyyy格式),名義賬戶和每筆交易的金額。我期待有一個輸出表,它將在每個月&年度內發佈到每個名義賬戶的金額相加。如何使用名義賬戶和月份來總計交易數據

我的數據的當前表:

Date--Nominal_Code--Amount 
01/01/2015--1000-£10 
03/01/2015--1000-£20 
15/01/2015--2000-£50 
20/01/2015--2000-£10 
01/02/2015--1000-£20 
15/02/2015--1000-£30 
20/02/2015--1000--£15 

我想要的輸出:

Month--Year--Nominal_Code--Amount 
Jan--2015--1000--£30 
Jan--2015--2000--£60 
Feb--2015--1000--£65 

當然這很簡單,但就是無法得到它!

任何和所有幫助讚賞!謝謝!

欣賞迄今爲止所有的幫助,但我仍然無法使其工作。也許我需要提供更多信息(作爲新手),可能我做了一些荒謬的事情,這意味着它永遠不會工作。所以,我使用Microsoft Query通過ODBC鏈接訪問表。該表被稱爲AUDIT_JOURNAL。

我導入表格並選擇在MS Query中查看。然後我看看查看SQL選項。它的內容如下:

SELECT AUDIT_JOURNAL.DATE, 
AUDIT_JOURNAL.NOMINAL_CODE, 
AUDIT_JOURNAL.AMOUNT, 
AUDIT_JOURNAL.FOREIGN_AMOUNT 
FROM AUDIT_JOURNAL AUDIT_JOURNAL 
WHERE (AUDIT_JOURNAL.DATE>={d '2015-02-01'}) 

它返回上面列出的4列的交易表。

我想將這些壓縮成一個彙總表,顯示每月,每年和NOMINAL_CODE組合的一條記錄。

我的第一個問題是我沒有Month或Year字段,只有格式爲yyyy-mm-dd的DATE字段。

試圖在DATE列上使用DATEPART(),YEAR()或MONTH()表達式時,我反覆出現一個錯誤,說Column Not Found。

SELECT YEAR(AUDIT_JOURNAL.DATE) AS Year, 
AUDIT_JOURNAL.NOMINAL_CODE, 
AUDIT_JOURNAL.AMOUNT, 
AUDIT_JOURNAL.FOREIGN_AMOUNT 
FROM AUDIT_JOURNAL AUDIT_JOURNAL 
WHERE (AUDIT_JOURNAL.DATE>={d '2015-02-01'}) 
+0

「顯示日期(DD-MM-yyyy格式)」解決這個問題,然後回來給我們。並且不要存儲'英鎊' – Strawberry

+0

您能告訴我們您迄今爲止創建的SQL查詢嗎? – radoh

回答

0

月內,你可以試試這個選擇

select date_format(month(STR_TO_DATE(date, '%m/%d/%Y'), '%m %Y') as month, nominal_code, sum(Amount) 
from my_table 
group by month 
1

需要您所查詢的這些功能:

當我這樣做,例如它發生。

除此之外的名稱,你需要GROUP BY總結一切。確保你做到這一點舒服;這是一項關鍵的SQL技能。

這裏是在查詢第一槍:

SELECT 
    MONTHNAME(`Date`) AS The_Month, 
    YEAR(`Date`) AS The_Year, 
    Nominal_Code, 
    SUM(Amount) AS Total_Amount 
FROM MyTable 
GROUP BY 
    MONTHNAME(`Date`), 
    YEAR(`Date`), 
    Nominal_Code 
ORDER BY 
    The_Year, 
    The_Month, 
    Nominal_Code 

這將會給結果,除了注意February的結果來January之前。這是因爲它按月名稱訂購。您需要按月訂購號碼,這是MySQL MONTH函數。要使月份數是查詢的一部分,您還需要GROUP BY它:

SELECT 
    MONTH(`Date`) AS Month_Number, 
    MONTHNAME(`Date`) AS The_Month, 
    YEAR(`Date`) AS The_Year, 
    Nominal_Code, 
    SUM(Amount) AS Total_Amount 
FROM MyTable 
GROUP BY 
    MONTH(`Date`), 
    MONTHNAME(`Date`), 
    YEAR(`Date`), 
    Nominal_Code 
ORDER BY 
    The_Year, 
    Month_Number, 
    Nominal_Code 
+0

謝謝@Ivar - 我的監督;我會解決它。 –

+0

謝謝。我敢肯定,我只是去一些愚蠢的,但我已經試過:SELECT MONTHNAME(AUDIT_JOURNAL.DATE)AS The_Month, YEAR(AUDIT_JOURNAL.DATE)AS The_Year, AUDIT_JOURNAL.NOMINAL_CODE, SUM(AUDIT_JOURNAL.AMOUNT) AS TOTAL_AMOUNT FROM AUDIT_JOURNAL.AUDIT_JOURNAL GROUP BY MONTHNAME(AUDIT_JOURNAL.DATE), YEAR(AUDIT_JOURNAL.DATE) ORDER BY The_Month, The_Year,我得到一個錯誤說「無法添加表 'AUDIT_JOURNAL.AUDIT_JOURNAL' 「 – Oli

+0

@你在'FROM'中有'AUDIT_JOURNAL.AUDIT_JOURNAL'。您可能只想要「FROM AUDIT_JOURNAL」,除非您的數據庫也被稱爲「AUDIT_JOURNAL」。 – Ivar

相關問題