Обсуждение: Sort problem
I was trying to do the following sort (two attributes with different types), but I kept on getting errors.
ORDER BY Price (data type - decimal), ProductName (data type - varchar)
Thanks for any help.
Samuel J. Sutjiono wrote: > I was trying to do the following sort (two attributes with different types), but I kept on getting errors. > > ORDER BY Price (data type - decimal), ProductName (data type - varchar) Would you share the errors with us? :-) -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Bruce,
My apology. Actually I posted the wrong problem. Here is my problem:
IF (SortOrder = ''price'') Then
BEGIN
For rec_set IN
SELECT * from Catalog where ((VendorName ~* SearchString)
ORDER BY CASE WHEN SortOrder = ''store'' Then VendorName
WHEN SortOrder = ''category'' Then
ProductCategory Else Price END
Here is the error message:
ERROR: CASE types "numeric" and "varchar" not matched.
By the way, do you know how to do a variable (that contains 'attribute name'
instead of 'attribute value') substitution. For instance, if the attribute
name 'Price' is passed to the sort parameter ($1) so I can just do ORDER BY
$1 instead of doing case statement.
Thanks so much for your help.
Sam
----- Original Message -----
From: "Bruce Momjian" <pgman@candle.pha.pa.us>
To: "Samuel J. Sutjiono" <ssutjiono@wc-group.com>
Cc: <pgsql-general@postgresql.org>; <pgsql-sql@postgresql.org>
Sent: Monday, February 25, 2002 2:46 PM
Subject: Re: [SQL] Sort problem
> Samuel J. Sutjiono wrote:
> > I was trying to do the following sort (two attributes with different
types), but I kept on getting errors.
> >
> > ORDER BY Price (data type - decimal), ProductName (data type - varchar)
>
> Would you share the errors with us? :-)
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman@candle.pha.pa.us | (610) 853-3000
> + If your life is a hard drive, | 830 Blythe Avenue
> + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
>
Samuel J. Sutjiono wrote: > Bruce, > > My apology. Actually I posted the wrong problem. Here is my problem: > > IF (SortOrder = ''price'') Then > BEGIN > For rec_set IN > SELECT * from Catalog where ((VendorName ~* SearchString) > ORDER BY CASE WHEN SortOrder = ''store'' Then VendorName > WHEN SortOrder = ''category'' Then > ProductCategory Else Price END > > Here is the error message: > ERROR: CASE types "numeric" and "varchar" not matched. > > By the way, do you know how to do a variable (that contains 'attribute name' > instead of 'attribute value') substitution. For instance, if the attribute > name 'Price' is passed to the sort parameter ($1) so I can just do ORDER BY > $1 instead of doing case statement. The CASE can't return on type of data in one branch and a different type in another. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
On Mon, 2002-02-25 at 17:17, Samuel J. Sutjiono wrote: > I was trying to do the following sort (two attributes with different types), but I kept on getting errors. > > ORDER BY Price (data type - decimal), ProductName (data type - varchar) There doesn't seem to be anything wrong with that phrase. You need to show us the whole query and the error messages. -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C "Peace I leave with you, my peace I give unto you; not as the world giveth, give I unto you. Let not your heart be troubled, neither let it be afraid." John 14:27