Запрос к бд с CASE в C#

87
29 августа 2021, 20:00

Пытаюсь выгрузить данные из бд, но не работает оператор CASE, выдает вместо данных пустые ячейки. В SQLiteStudio все правильно выгружает при данном запросе. Как быть?

conn = new SQLiteConnection(conn_string);
conn.Open();
SQLiteCommand command = new SQLiteCommand();
command.Connection = conn;
string query = "select count(id) as 'Всего заказов', case when status = 1 then count(id) else null end as 'Завершенных заказов', case when status = 1 then sum(cost) else null end as 'Прибыль' from appointment";
command.CommandText = query;
SQLiteDataAdapter da = new SQLiteDataAdapter(command);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource=dt;
conn.Close();
Answer 1
select count(id) as 'Всего заказов',
  sum(case when status = 1 then 1 end) as 'Завершенных заказов',
  sum(case when status = 1 then cost end) as 'Прибыль'
from appointment
Answer 2

Заработало, когда добавил после case атрибут сравнения.

query = "select count(id) as 'Всего заказов', case status when status = 1 then count(id) else null end as 'Завершенных заказов', case status when status = 1 then sum(cost) else null end as 'Прибыль' from appointment";
READ ALSO
Не получается разделить строки

Не получается разделить строки

Результат который хочу я:

214
Проблема с добавлением рекламы от Unity Ads

Проблема с добавлением рекламы от Unity Ads

Вроде бы все очень просто с Unity Ads, скачал плагин, вставил пару строк в код и все, но при тесте в PlayMode не показывается реклама, хотя ошибок в коде...

108
Стрельба сверху вниз

Стрельба сверху вниз

Задача состоит теперь сделать стрельбу без таргетаСверху вниз

119
Как понять, когда лучше вернуть List, а когда IEnumerable?

Как понять, когда лучше вернуть List, а когда IEnumerable?

Ну с правилом, когда нужно принять наиболее базовый тип- тут все понятно:

228