SQL 多个函数的字符串问题
SQL String Troubles with Multiple Functions
我正在使用连接到 Visual Basic 的本地 Access 数据库。我的查询是
SELECT RebateReceived, DatePart('yyyy',[RebateMailedDate]) AS MailedDate, Sum(RebateValue) as MoneyReceived
FROM RebateInfoStorage
where RebateReceived='Received'
group by RebateReceived
having DatePart('yyyy',[RebateMailedDate])
我正在尝试获取具有相同年份的列和具有 'received' 的单词来识别需要汇总(添加)在一起的记录。我对 Group By
和 Having
关键字或 Sum()
和 DatePart()
函数不是很熟悉。
因此 DBMS 将进入 RebateInfoStorage 并获取 RebateReceived = 'Received'
中的所有行。然后,它将对这些记录进行分组,其中每个组包含表达式 DatePart('yyyy', RebateMailedDate)
的计算结果相同的记录(即它们具有相同的年份)。然后对于每个组,它会 return 一个包含年份的结果行,以及该组中所有 RebateValue
的总和。操作按此顺序进行。
HAVING 类似于 WHERE,但发生在 GROUP BY 之后,是一组记录的条件,而 WHERE 是记录的条件。
SELECT
YEAR(RebateMailedDate) AS MailedDate,
SUM(RebateValue) as MoneyReceived
FROM
RebateInfoStorage
WHERE
RebateReceived = 'Received'
GROUP BY
YEAR(RebateMailedDate);
编辑:看来 YEAR(x) 是一个更合适的函数!
您应该按 RebateReceived='Received' 的 DatePart 分组。关于Having的更多语法可以参考http://www.w3schools.com/sql/sql_having.asp
分组依据意味着您的输出 table 将根据该列中的唯一元素进行分组。比如有多个entry,年份都是2014,那么它们都会被归为一组,然后将它们的RebateValue加在一起。如果您使用 RebateReceived 分组,所有条目将被添加,您最终将得到一个总和。
我正在使用连接到 Visual Basic 的本地 Access 数据库。我的查询是
SELECT RebateReceived, DatePart('yyyy',[RebateMailedDate]) AS MailedDate, Sum(RebateValue) as MoneyReceived
FROM RebateInfoStorage
where RebateReceived='Received'
group by RebateReceived
having DatePart('yyyy',[RebateMailedDate])
我正在尝试获取具有相同年份的列和具有 'received' 的单词来识别需要汇总(添加)在一起的记录。我对 Group By
和 Having
关键字或 Sum()
和 DatePart()
函数不是很熟悉。
因此 DBMS 将进入 RebateInfoStorage 并获取 RebateReceived = 'Received'
中的所有行。然后,它将对这些记录进行分组,其中每个组包含表达式 DatePart('yyyy', RebateMailedDate)
的计算结果相同的记录(即它们具有相同的年份)。然后对于每个组,它会 return 一个包含年份的结果行,以及该组中所有 RebateValue
的总和。操作按此顺序进行。
HAVING 类似于 WHERE,但发生在 GROUP BY 之后,是一组记录的条件,而 WHERE 是记录的条件。
SELECT
YEAR(RebateMailedDate) AS MailedDate,
SUM(RebateValue) as MoneyReceived
FROM
RebateInfoStorage
WHERE
RebateReceived = 'Received'
GROUP BY
YEAR(RebateMailedDate);
编辑:看来 YEAR(x) 是一个更合适的函数!
您应该按 RebateReceived='Received' 的 DatePart 分组。关于Having的更多语法可以参考http://www.w3schools.com/sql/sql_having.asp
分组依据意味着您的输出 table 将根据该列中的唯一元素进行分组。比如有多个entry,年份都是2014,那么它们都会被归为一组,然后将它们的RebateValue加在一起。如果您使用 RebateReceived 分组,所有条目将被添加,您最终将得到一个总和。