几乎是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中查看。然后我查看View 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组合的一条记录。
我的第一个问题是我没有月份或年份字段,只有DATE字段,格式为yyyy-mm-dd。
尝试在DATE列上使用DATEPART(),YEAR()或MONTH()表达式时,我反复收到错误,指出找不到列。
当我执行以下操作时会发生这种情况,例如:
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 :(得分: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
的通知时,我们会给出结果。这是因为它按月名称进行排序。您希望按月 number 订购,这是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
答案 1 :(得分: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