Thread: 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