Peewee Not Honouring Alias When Alias Name Matches Column Name
This is known behavior, as Peewee falls back to using heuristics (column name in this case) to try to determine which "converter" to apply to the value coming back from the database cursor. It is treating each string, 'Y' and 'N' as truth-y boolean values.

To eliminate this behavior, just add `.coerce(False)` to your `Case`:

```python
print(list(A.select(Case(None, [(A.a, "Y")], "N").coerce(False).alias("a")).dicts()))
``` Awesome, thanks!
When doing a query with peewee (version 3.14.0), when making an alias for a column that matches the actual column name, the values in the output do not match what was given in the query. It seems to be casting the data to match the data type of the original column. The following code highlights this issue:

```
from peewee import *
db = SqliteDatabase(":memory:")
db.connect()

class A(Model):
	a = BooleanField()
	class Meta:
		database = db

db.create_tables([A])
A.insert(dict(a=True)).execute()
A.insert(dict(a=False)).execute()

print(list(A.select(Case(None, [(A.a, "Y")], "N").alias("a")).dicts()))
print(list(A.select(Case(None, [(A.a, "Y")], "N").alias("b")).dicts()))
```

The output is

```
[{'a': True}, {'a': True}]
[{'b': 'Y'}, {'b': 'N'}]
```

I would expect the output of both cases be the same and to match the output with alias "b".