Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
Внизвыбор столбца для суммирования в SQL Найти похожие ветки
← →
Васька (2014-03-12 15:03) [0]Привет, мастера.
Есть запросSelect base_an.kod_an,base_an.PL_minus , COUNT(base_an.kod_an) as "Кол-во"
from base_an, Diagnost
where base_an.vid_an=1
and base_an.kod_an=Diagnost.Short_name
and base_an.clinic="гб1"
group by base_an.kod_an, base_an.PL_minus
В таблицеDiagnost
есть два поляPrice_minus
иPrice_pl
значение которых зависит от base_an.PL_minus.
Подскажите как сделать в запросе чтобы в столбец попадала сумма соответствующего поля?
← →
Ega23 © (2014-03-12 15:13) [1]я не очень понял, что тебе требуется, но вангую, что case:
select
case some_column
when some_column_value1 then some_result_value1
when some_column_value2 then some_result_value2
when some_column_value3 then some_result_value3
end as some_resultset_field
← →
Васька (2014-03-12 15:18) [2]а как это к моему запросу приделать?
просто добавить в конец?
← →
Васька (2014-03-12 15:26) [3]а на моих именах столбцов можно?
не понял я что куда продставлять.
Значение base_an.PL_minus ="+" или "-"
← →
Труп Васи Доброго © (2014-03-12 15:34) [4]
> просто добавить в конец?
Шедеврально!!!
ИМХО ТС сам не совсем понимает что хочет.
Человек, ты для начала сам сядь и на бумаге письменно по русски (без SQL) изложи чего хочешь, там глади и вопрос отпадёт. А так-то миелофнов у нас нет.
← →
Ega23 © (2014-03-12 15:36) [5]
> а на моих именах столбцов можно?
Можно. Только сначала представь себе, что ты - это я. И попробуй изложить задачу так, чтобы я её понял. А то ведь я не в курсах про твои base_an.kod_an, base_an.PL_minus и прочие Диагносты.
← →
Васька (2014-03-12 16:05) [6]Все я разобрался с запросом.
но возникла непонятная проблема, а именно:
запрос работает в MS SQL Server.
а моя программа работает с Access.
Я перенес временно в SQL Server для удобства составления запросов на этапе проектирования.
В Delphi делаю этот запросqry1.SQL.Add("select base_an.kod_an,base_an.PL_minus,");
qry1.SQL.Add("COUNT(base_an.kod_an),");
qry1.SQL.Add("SUM(case when base_an.PL_minus = ""-"" then diagnost.Price_otr");
qry1.SQL.add("else Diagnost.Price_pl end)");
qry1.SQL.Add("from base_an, Diagnost");
qry1.SQL.Add("where base_an.vid_an=1");
qry1.SQL.Add("and base_an.kod_an=Diagnost.Short_name");
qry1.SQL.Add("and base_an.clinic=""гб1""");
qry1.SQL.Add("group by base_an.kod_an, base_an.PL_minus");
qry1.Active:=True;
Выдаетclass EOleException with message "Неопознанная ошибка"
.
подскажите в чем дело?
← →
Ega23 © (2014-03-12 16:13) [7]Опять-таки вангую:
qry1.SQL.Text := "select base_an.kod_an,base_an.PL_minus, COUNT(base_an.kod_an), ..... group by base_an.kod_an, base_an.PL_minus";
← →
Ega23 © (2014-03-12 16:14) [8]Да, и для COUN и SUM нехило бы названия столбцов рекордсета добавить.
Ну тамCOUNT(base_an.kod_an) as Cnt, SUM(case ...end) as Summ
← →
Труп Васи Доброго © (2014-03-13 00:05) [9]
> запрос работает в MS SQL Server.
> а моя программа работает с Access.
> Выдает class EOleException with message "Неопознанная ошибка".
> PL_minus = ""-""
Мы не в Чикаго, моя дорогая...
Для Access знак - (минус) это подстановочный знак (см. справку) и если ты хочешь искать его, то засунь его в квадратные скобки [-]
Скузи за обшибки, ми зело пьян :)
← →
Васька (2014-03-13 08:26) [10]
> засунь его в квадратные скобки [-]
Все равно не помогает
пробовал и в ковычках (PL_minus="[-]") и без них (PL_minus=[-])
← →
Ega23 © (2014-03-13 08:55) [11]А всё потому, что нехрен литералы использовать там, где не надо.
PL_minus=["-"] а так?
← →
Васька (2014-03-13 09:03) [12]
> PL_minus=["-"]
и так не помогает
← →
Ega23 © (2014-03-13 09:10) [13]Ну тогда это к Коле вопрос, он у нас по access специалист, я с ним вообще не работал
← →
Васька (2014-03-13 09:18) [14]Че за Коля? где его найти?
← →
Труп Васи Доброго © (2014-03-13 10:05) [15]
> Все равно не помогает
И правильно не помогает. Ты скажешь к конце концов КТО выполняет запрос? Какая программа (СУБД)? Что означают твои слова "моя программа работает с Access"? Если ты этот запрос пытаешься выполнить в самом ACCESS, то тебя ждёт облом, не знает он никаких кейсов (case) вообще, там всякие IIF, Choose и Switch используются. Case только из VBA работает.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c