问题
I am trying to run the following SQL statement:
"SELECT *, (IIF([Field]=TRUE,'StringValue1','StringValue2') AS [NewField] FROM [Table1] ORDER BY [NewField] ASC"
But this gives me an error "Parameter NewField has no default value". How can I solve it?
I am using Microsoft Access (MDB) database using Jet Engine from Delphi 7.
Thank you!
回答1:
In the ORDER BY
clause, you can reference a column by its ordinal number:
SELECT
IIF(T.[Field]=TRUE, 'StringValue1', 'StringValue2') AS [NewField],
T.*
FROM [Table1] T
ORDER BY 1 ASCENDING
回答2:
I found another weird way to solve this problem:
I just repeat the IIF statement instead of using field name, like:
SELECT *, (IIF([Field]=TRUE,'StringValue1','StringValue2')) AS [NewField] FROM [Table1] ORDER BY (IIF([Field]=TRUE,'StringValue1','StringValue2')) ASC
来源:https://stackoverflow.com/questions/2793980/parameter-xxx-has-no-default-value-error-when-using-order-by-in-sql-statement