Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выбор столбца для суммирования в 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо