![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выбор столбца для суммирования в SQL [D7, XP]
Васька © (2014-03-12 15:03:00)Привет, мастера.
Есть запрос
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.
Подскажите как сделать в запросе чтобы в столбец попадала сумма соответствующего поля?
Труп Васи Доброго (2014-03-13 10:05:00) [1]
> Все равно не помогает
И правильно не помогает. Ты скажешь к конце концов КТО выполняет запрос? Какая программа (СУБД)? Что означают твои слова "моя программа работает с Access"? Если ты этот запрос пытаешься выполнить в самом ACCESS, то тебя ждёт облом, не знает он никаких кейсов (case) вообще, там всякие IIF, Choose и Switch используются. Case только из VBA работает.
Васька (2014-03-13 09:18:00) [2]Че за Коля? где его найти?
Ega23 (2014-03-13 09:10:00) [3]Ну тогда это к Коле вопрос, он у нас по access специалист, я с ним вообще не работал
Васька (2014-03-13 09:03:00) [4]
> PL_minus=["-"]
и так не помогает
Ega23 (2014-03-13 08:55:00) [5]А всё потому, что нехрен литералы использовать там, где не надо.
PL_minus=["-"] а так?
Васька (2014-03-13 08:26:00) [6]
> засунь его в квадратные скобки [-]
Все равно не помогает
пробовал и в ковычках (PL_minus='[-]') и без них (PL_minus=[-])
Труп Васи Доброго (2014-03-13 00:05:00) [7]
> запрос работает в MS SQL Server.
> а моя программа работает с Access.
> Выдает class EOleException with message 'Неопознанная ошибка'.
> PL_minus = ''-''
Мы не в Чикаго, моя дорогая...
Для Access знак - (минус) это подстановочный знак (см. справку) и если ты хочешь искать его, то засунь его в квадратные скобки [-]
Скузи за обшибки, ми зело пьян :)
Ega23 (2014-03-12 16:14:00) [8]Да, и для COUN и SUM нехило бы названия столбцов рекордсета добавить.
Ну тамCOUNT(base_an.kod_an) as Cnt, SUM(case ...end) as Summ
Ega23 (2014-03-12 16:13:00) [9]Опять-таки вангую:
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';
Васька (2014-03-12 16:05:00) [10]Все я разобрался с запросом.
но возникла непонятная проблема, а именно:
запрос работает в 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 15:36:00) [11]
> а на моих именах столбцов можно?
Можно. Только сначала представь себе, что ты - это я. И попробуй изложить задачу так, чтобы я её понял. А то ведь я не в курсах про твои base_an.kod_an, base_an.PL_minus и прочие Диагносты.
Труп Васи Доброго (2014-03-12 15:34:00) [12]
> просто добавить в конец?
Шедеврально!!!
ИМХО ТС сам не совсем понимает что хочет.
Человек, ты для начала сам сядь и на бумаге письменно по русски (без SQL) изложи чего хочешь, там глади и вопрос отпадёт. А так-то миелофнов у нас нет.
Васька (2014-03-12 15:26:00) [13]а на моих именах столбцов можно?
не понял я что куда продставлять.
Значение base_an.PL_minus ='+' или '-'
Васька (2014-03-12 15:18:00) [14]а как это к моему запросу приделать?
просто добавить в конец?
Ega23 (2014-03-12 15:13:00) [15]я не очень понял, что тебе требуется, но вангую, что 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