powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как сделать SQL Select из одного столбца в 2 разных по условию?
5 сообщений из 5, страница 1 из 1
как сделать SQL Select из одного столбца в 2 разных по условию?
    #34200069
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Столкнулся с такой проблемой - есть база, в ней стлбцы Код, Количество
мне нужно сделать выборку суммa (Количество) в несколько разных колонок в один курсор по условию что в колонке Код. например выбрать сумму (Количество) когда код=1 или 2, и в другую колонку для 3 и 5 и тд.

Как решается данная проблема? несколькими SQL Select или можно все таки одним обойтись?
я догадываюсь что это с помощью UNION делается, но как описать? У меня не получается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
   SELECT ;
      CaseGroups.CaseGrCode ,;
      NVL(SUM(SecrDepJRpt.Quantity), 000000000000000 ) as ViewedQ ,;
       000000000000000  as DicidedQ ;
    FROM CaseGroups ;
      LEFT JOIN SecrDepJRpt ON ;
           SecrDepJRpt.CaseAcCode =  1  AND ;
           BETWEEN(SecrDepJRpt.Date,thisform.txtDateBeg.Value,thisform.txtDateEnd.Value) AND ;
           SecrDepJRpt.CaseGrCode = CaseGroups.CaseGrCode ;
    GROUP BY ;
      CaseGroups.CaseGrCode ;
  UNION ;
    SELECT ;
      CaseGroups.CaseGrCode ,;
       000000000000000  as ViewedQ ,;
      NVL(SUM(SecrDepJRpt.Quantity), 000000000000000 ) as DicidedQ ;
    FROM CaseGroups ;
      LEFT JOIN SecrDepJRpt ON ;
           SecrDepJRpt.CaseAcCode =  2  AND ;
           BETWEEN(SecrDepJRpt.Date,thisform.txtDateBeg.Value,thisform.txtDateEnd.Value) AND ;
           SecrDepJRpt.CaseGrCode = CaseGroups.CaseGrCode ;
    GROUP BY ;
      CaseGroups.CaseGrCode ;
    INTO CURSOR curReport1

тогда на выходе - шахматка типа
сумма,0
0,сумма

сенксь

вфп9
...
Рейтинг: 0 / 0
как сделать SQL Select из одного столбца в 2 разных по условию?
    #34200398
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIF()
...
Рейтинг: 0 / 0
как сделать SQL Select из одного столбца в 2 разных по условию?
    #34200745
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. вот так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT ;
      CaseGroups.CaseGrCode ,;
      iif(SecrDepJRpt.CaseAcCode =  1 ,NVL(SUM(SecrDepJRpt.Quantity), 000000000000000 ), 0000000000000 ) as ViewedQ ,;
      iif(SecrDepJRpt.CaseAcCode =  2 ,NVL(SUM(SecrDepJRpt.Quantity), 000000000000000 ), 0000000000000 ) as DicidedQ ;
    FROM CaseGroups ;
      LEFT JOIN SecrDepJRpt ON ;
           BETWEEN(SecrDepJRpt.Date,thisform.txtDateBeg.Value,thisform.txtDateEnd.Value) AND ;
           SecrDepJRpt.CaseGrCode = CaseGroups.CaseGrCode ;
    GROUP BY ;
      CaseGroups.CaseGrCode ;
    INTO CURSOR curReport1
...
Рейтинг: 0 / 0
как сделать SQL Select из одного столбца в 2 разных по условию?
    #34200781
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT ;
      CaseGroups.CaseGrCode ,;
      SUM(iif(SecrDepJRpt.CaseAcCode =  1 ,NVL(SecrDepJRpt.Quantity, 000000000000000 ), 0000000000000 )) as ViewedQ ,;
      SUM(iif(SecrDepJRpt.CaseAcCode =  2 ,NVL(SecrDepJRpt.Quantity, 000000000000000 ), 0000000000000 )) as DicidedQ ;
    FROM CaseGroups ;
      LEFT JOIN SecrDepJRpt ON ;
           BETWEEN(SecrDepJRpt.Date,thisform.txtDateBeg.Value,thisform.txtDateEnd.Value) AND ;
           SecrDepJRpt.CaseGrCode = CaseGroups.CaseGrCode ;
    GROUP BY ;
      CaseGroups.CaseGrCode ;
    INTO CURSOR curReport1
...
Рейтинг: 0 / 0
как сделать SQL Select из одного столбца в 2 разных по условию?
    #34200933
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не канает в моем случае - выборку делает много раз превосходящую реал
мой случай по-сложнее чем я тут выложил в примере... главное что превосходство не кратно реальным данным, т.е. должно быть 197, а выходит 2202, должно быть 71, а выходит 442 и тд, второе на первое нацело не делится.
Разделил я, короче, всю выборку на 5 отдельных - и быстрее оказалось, понятнее и правильнее :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как сделать SQL Select из одного столбца в 2 разных по условию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]