Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Можно ли в выборке с UNION убрать "шахматный" эффект? / 9 сообщений из 9, страница 1 из 1
19.01.2009, 17:13
    #35765384
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в выборке с UNION убрать "шахматный" эффект?
Привет!
Такая вот выборка
Код: 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
19.01.2009, 17:19
    #35765415
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в выборке с UNION убрать "шахматный" эффект?
Выведи в excel. Сделай сводную таблицу.
...
Рейтинг: 0 / 0
19.01.2009, 17:21
    #35765421
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в выборке с 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 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
19.01.2009, 17:49
    #35765523
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в выборке с UNION убрать "шахматный" эффект?
Вместо 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
19.01.2009, 17:52
    #35765532
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в выборке с UNION убрать "шахматный" эффект?
Закрывающую скобку забыл в обеих SUM()
...
Рейтинг: 0 / 0
19.01.2009, 21:54
    #35765915
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в выборке с UNION убрать "шахматный" эффект?
Спасибо всем!

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

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


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