Добавление регистра в запросе - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть 3 таблицы:

Table_One:

Table_One

Table_Two (это «промежуточная таблица»):

Table_Two

И Table_Three:

Table_Three

Соотношение имеет видэто:

enter image description here

Я не знаю, почему слово Total не отображается в результате следующего запроса:

SELECT 

ID_Table_One, 
Select_Info,
Deb, 
Cre

FROM Table_Two

UNION

SELECT 

ID_Table_One, 
"Total", 
IIF(SUM(Deb) - Sum(Cre) >= 0, SUM(Deb) - Sum(Cre), "" ), 
IIF(SUM(Deb) - Sum(Cre) <= 0, SUM(Deb) - Sum(Cre), "" )

FROM Table_Two

GROUP BY ID_Table_One;

Это результат запроса выше:

Query

Поле Select_Info является полем «выпадающего списка», я имею в виду, он показывает уже существующую информацию со следующим запросом:

 SELECT 
   [Table_Three].[Id_Table_Three],
   [Table_Three].[Id_Table_Three_Plus_Info] 
 FROM Table_Three; 

Я полагаю, что правильный процесс для этого - вызвать идентификатор 600 Table_Three, который будет показан в последнем SELECT запроса,что было бы правильно сделать? Если это так, как это можно сделать?

Если я закрою Access с тем же запросом, я получу такой результат:

Query2

Как вы заметили, теперь показывает регистр Total, но только«номерная часть» показывается, мне не хватает части - A, - B и - C.Я попытался изменить порядок в поле Id_Table_Three_Plus_Info (A - 100), но оно всегда показывает число, а не букву.Оба они являются текстовыми значениями.

Я могу справиться с этим, создав новое поле со всеми нужными мне значениями (100 - A, 200 - B ... 600 - ИТОГО), я имею в виду, невзятие этих регистров по запросу для заполнения поля Select_Info.Но я хотел бы получить предложения по этому редкому поведению запросов.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Поскольку вы отредактировали свой вопрос и теперь добавили больше деталей, я думаю, что вам просто нужно отредактировать вторую часть запроса UNION и заменить значение «Всего» на 600 следующим образом:

SELECT 

ID_Table_One, 
600, 
IIF(SUM(Deb) - Sum(Cre) >= 0, SUM(Deb) - Sum(Cre), "" ), 
IIF(SUM(Deb) - Sum(Cre) <= 0, SUM(Deb) - Sum(Cre), "" )

FROM Table_Two

GROUP BY ID_Table_One;

Это покажет желаемое значение «600 - Всего», как требуется.

0 голосов
/ 24 сентября 2018

Попробуйте с псевдонимом:

ID_Table_One, 
"Total" As Select_Info, 
IIF(SUM(Deb) - Sum(Cre) >= 0, SUM(Deb) - Sum(Cre), "" ), 
IIF(SUM(Deb) - Sum(Cre) <= 0, SUM(Deb) - Sum(Cre), "" )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...