powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Можно ли в выборке с UNION убрать "шахматный" эффект?
9 сообщений из 9, страница 1 из 1
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35765384
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Такая вот выборка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT ;
		curSelectedWorkers.ShortName as WorkerSName,;
		curAssetsGroups.AssetsGroupN as GroupN,;
	  	COUNT(curRpt.AssetsGroupID) AS NotChecked,;
	  	 0  AS Checked;
  	FROM curRpt;
  	LEFT JOIN curSelectedWorkers ON curSelectedWorkers.WorkerID = curRpt.WorkerID;
  	LEFT JOIN curAssetsGroups ON curAssetsGroups.AssetsGroupID = curRpt.AssetsGroupID;
  	WHERE EMPTY(curRpt.CCDOCCHKD);
	GROUP BY WorkerSName, AssetsGroupN;
UNION;
SELECT ;
		curSelectedWorkers.ShortName as WorkerSName,;
		curAssetsGroups.AssetsGroupN as GroupN,;
	  	 0  as NotChecked,;
	  	COUNT(curRpt.AssetsGroupID) as Checked;
  	FROM curRpt;
  	LEFT JOIN curSelectedWorkers ON curSelectedWorkers.WorkerID = curRpt.WorkerID;
  	LEFT JOIN curAssetsGroups ON curAssetsGroups.AssetsGroupID = curRpt.AssetsGroupID;
  	WHERE NOT EMPTY(curRpt.CCDOCCHKD);
	GROUP BY WorkerSName, AssetsGroupN
Суть выборки подсчитать кол-во документов по признаку Проверено/Непроверено (CCDOCCHKD)
Работает, но выбирает в шахматном виде: (Группа Непроверенных Проверенных)
26 2 0
26 0 1
44 2 0
44 0 4
а хочется-то
26 2 1
44 2 4

Это возможно в самой выборке описать или потом надо с помощью SCAN создавать по выборке еще один курсор и в нем объединять?

спасибо!

vfp9
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35765415
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Выведи в excel. Сделай сводную таблицу.
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35765421
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прирно так:
Код: 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 WorkerSName, GroupN, sum(NotChecked) as NotChecked, sum(Checked) as Checked from (
SELECT ;
		curSelectedWorkers.ShortName as WorkerSName,;
		curAssetsGroups.AssetsGroupN as GroupN,;
	  	COUNT(curRpt.AssetsGroupID) AS NotChecked,;
	  	 0  AS Checked;
  	FROM curRpt;
  	LEFT JOIN curSelectedWorkers ON curSelectedWorkers.WorkerID = curRpt.WorkerID;
  	LEFT JOIN curAssetsGroups ON curAssetsGroups.AssetsGroupID = curRpt.AssetsGroupID;
  	WHERE EMPTY(curRpt.CCDOCCHKD);
	GROUP BY WorkerSName, AssetsGroupN;
UNION;
SELECT ;
		curSelectedWorkers.ShortName as WorkerSName,;
		curAssetsGroups.AssetsGroupN as GroupN,;
	  	 0  as NotChecked,;
	  	COUNT(curRpt.AssetsGroupID) as Checked;
  	FROM curRpt;
  	LEFT JOIN curSelectedWorkers ON curSelectedWorkers.WorkerID = curRpt.WorkerID;
  	LEFT JOIN curAssetsGroups ON curAssetsGroups.AssetsGroupID = curRpt.AssetsGroupID;
  	WHERE NOT EMPTY(curRpt.CCDOCCHKD);
	GROUP BY WorkerSName, AssetsGroupN) as t1
GROUP BY WorkerSName, GroupN
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35765523
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо COUNT() можно использовать конструкцию SUM(IIF(),1,0) и выполнить все в одном запросе без условия WHERE

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT ;
	curSelectedWorkers.ShortName as WorkerSName,;
	curAssetsGroups.AssetsGroupN as GroupN,;
	SUM(IIF(EMPTY(curRpt.CCDOCCHKD),  1 ,  0 ) AS NotChecked,;
	SUM(IIF(EMPTY(curRpt.CCDOCCHKD),  0 ,  1 ) AS Checked;
FROM curRpt;
LEFT JOIN curSelectedWorkers ON curSelectedWorkers.WorkerID = curRpt.WorkerID;
LEFT JOIN curAssetsGroups ON curAssetsGroups.AssetsGroupID = curRpt.AssetsGroupID;
GROUP BY WorkerSName, AssetsGroupN
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35765532
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закрывающую скобку забыл в обеих SUM()
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35765915
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем!

Владимир Максимов, Вы - как всегда :) Самый изящный способ. И главное я припоминал что-то в роде этого, с SUM, но повторить так и не смог...

2Sergey Sizov: Ваш вариант посложнее, и там еще надо добавить в GROUP BY поля Checkedm NotChecked - иначе не пашет. А "as t1" - это вместо "INTO CURSOR t1"? И там еще останется выборка "Query" в памяти открытой, т.е. надо не забыть прихлопнуть, но самое досадное что в итоге шахматка на месте...
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35765926
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Sergey Sizov: Извиняюсь, там я наплужил. Все работет в таком виде как написано. По выборке "Query" - таки правда. И еще при этом результат первой выборки "выпадает" на экран - приходится закрывать, а как этого избежать - я так и не понял...
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35766004
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CTAC-KO2Sergey Sizov: Извиняюсь, там я наплужил. Все работет в таком виде как написано. По выборке "Query" - таки правда. И еще при этом результат первой выборки "выпадает" на экран - приходится закрывать, а как этого избежать - я так и не понял...
Как обычно - добавить INTO Cursor или куда там еще надо.
...
Рейтинг: 0 / 0
Можно ли в выборке с UNION убрать "шахматный" эффект?
    #35766051
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov.CTAC-KO2Sergey Sizov: Извиняюсь, там я наплужил. Все работет в таком виде как написано. По выборке "Query" - таки правда. И еще при этом результат первой выборки "выпадает" на экран - приходится закрывать, а как этого избежать - я так и не понял...
Как обычно - добавить INTO Cursor или куда там еще надо.Я акцентировал внимание что именно первая выборка, которая в скобках, выводит результат на экран. Вторую я отправил в курсор - она не "вылазит". А в первую добавить into cursor почему-то не удается - рыжая сразу выдает ошибку синтаксиса.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Можно ли в выборке с UNION убрать "шахматный" эффект?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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