On 16-Sep-2011 10:43 , Michael Ryan wrote:
Anyone know how I would do this from Showcase:
GROUP BY
CASE
WHEN MONTH ( DATE ( MYDATE, YYYYMMDD ) )>= 10
THEN YEAR ( DATE ( MYDATE, YYYYMMDD ) ) + 1
ELSE YEAR ( DATE ( MYDATE, YYYYMMDD ) )
END
in standard SQL? MYDATE is an 8.0 numeric field containing a date
like 20110916.
Being numeric data in the desirable YYYYMMDD representation, I do not
see any requirement to use either DATE casting or the CASE expression in
order to achieve the desired result. Various simple arithmetic
expressions enable easily incrementing the year portion of the decimal
value representing the date, which can then be cast in order to both
specify data type and effect integer truncation. Note: rounding for
decimal and integer data types on numeric assignments [excluding
decfloat data type] must be requested using the ROUND() scalar.
The four expressions included below should effect the desired
YEAR-like result; the later SQL shows the last of those expressions on
both the SELECT and the GROUP BY clause:
int( (mydate+9000) / 10000 )
dec( (mydate+9000) / 10000 , 4)
dec( mydate/10000 + .9, 4)
int( mydate/10000 + .9 )
select ... int( mydate/10000 + .9 )
...
group by int( mydate/10000 + .9 )
Regards, Chuck
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact
[javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.