【发布时间】:2016-04-18 17:47:27
【问题描述】:
我应该编写一个查询,以降序显示 2010 年每个月的总利润。
到目前为止,我有一个查询以降序显示 2010 年的总利润,我有一个可以提取每个月的查询,但我似乎无法将两者联系起来。
select (SalesPrice - AcquisitionPrice) profit, datesold
from Transaction
where DateSold >= '10-jan-01' and DateSold <= '10-dec-31';
和:
select to_char(datesold, 'mon')
from transaction
group by to_char(datesold, 'mon')
【问题讨论】:
-
必须是mysql。第二个查询不会在 Oracle 中运行。此外,如果没有 Oracle 中的 to_date(thingie, format_mask),日期数学将无法工作。
-
@TGray 如果
NLS_DATE_FORMAT参数设置为YY-MON-DD,它将在Oracle 中工作,因为Oracle 将尝试使用NLS_DATE_FORMAT会话参数对字符串文字执行隐式TO_DATE( datevalue, format_mask )格式掩码。最好明确指定格式掩码(因为客户端可以更改会话参数)或使用 ANSI/ISO 日期文字。 -
@MT0,你是对的。作为顾问,我从不使用该参数,因为我的客户数据库之间没有共同点,而且其中一些正在使用非常旧的版本(想想 v6.0.27)。我发现始终格式化日期是一个好习惯。 YMMV :)