Обсуждение: Case Statement

Поиск
Список
Период
Сортировка

Case Statement

От
"Tom Haddon"
Дата:
Hi Folks,

Pretty basic one here. I'm trying to do a SELECT statement that includes a
CASE structure that will be used in the ORDER BY clause, and I want the CASE
structure to evaluate a bunch of criteria and in each case increment its
value by a certain amount:

SELECT id, description CASE    field1 IS TRUE THEN CASE=CASE+1    field2 IS TRUE THEN CASE=CASE+2    END
FROM table
ORDER BY CASE, description;

Am I misunderstanding what CASE can do here, and if so, how else do I do
what I'm trying to do? I know that that isn't right - any pointers
appreciated.

Thanks, Tom



Re: Case Statement

От
Stephan Szabo
Дата:
On Wed, 31 Jul 2002, Tom Haddon wrote:

> Hi Folks,
>
> Pretty basic one here. I'm trying to do a SELECT statement that includes a
> CASE structure that will be used in the ORDER BY clause, and I want the CASE
> structure to evaluate a bunch of criteria and in each case increment its
> value by a certain amount:
>
> SELECT id, description CASE
>         field1 IS TRUE THEN CASE=CASE+1
>         field2 IS TRUE THEN CASE=CASE+2
>         END
> FROM table
> ORDER BY CASE, description;
>
> Am I misunderstanding what CASE can do here, and if so, how else do I do
> what I'm trying to do? I know that that isn't right - any pointers
> appreciated.

Are you trying to get a 0-3 based on field1 and field2 or some kind of
aggregate?  The first you can do that with something likecase when field1 is true then 1 else 0 end +case when field2
istrue then 2 else 0 end
 
I think. (Extend for more columns)

Or if you've got like 7-8 columns maybe just make a function that does
the work for you for clarity.

You'll also need a comma after description and you'll want to alias the
case expression and use that in order by or use the position number.