Как правильно использовать где заказ, имея заказ по - PullRequest
0 голосов
/ 22 апреля 2020

В настоящее время я получаю эту ошибку из своего запроса на SQL Сервер:

Недопустимый столбец 'table1.nr' в списке выбора, поскольку он не содержится в статистической функции и не в предложении GROUP BY.

Это мои данные из таблицы1

nr      artnr   typNr
4747    mob100  3
4747    mob123  4
4842    mob122  1
2051    mob123  5
2051    mob125  5

Это мой запрос:

SELECT nr
FROM table1
WHERE artnr LIKE '%Mob%'
GROUP BY typNr
HAVING COUNT(*) > 1
ORDER BY nr asc;

В результате я хочу только чтобы получить

nr
4747

мой запрос неверен, он должен быть покрыт, а typNr отличается, в этом случае было бы правильным получить результат № 4747

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020
declare @table1 table(nr int, artnr varchar(10), typNr int);

insert into @table1(nr, artnr, typNr)
values
(4747, 'mob100', 3),
(4747, 'mob123', 4),
(4842, 'mob122', 1),
(2051, 'mob123', 5),
(2051, 'mob125', 5) ;

SELECT nr
FROM @table1
WHERE artnr LIKE '%Mob%'
GROUP BY nr
HAVING MIN(typNr) <> MAX(typNr)
ORDER BY nr asc;
0 голосов
/ 22 апреля 2020

Вы, кажется, хотите:

SELECT TOP (1) nr -- remove top clause if you want all rows
FROM table1
WHERE artnr LIKE '%Mob%'
GROUP BY nr
HAVING COUNT(DISTINCT typNr) > 1
ORDER BY nr;

Если вы хотите все столбцы, вы можете использовать exists:

select t1.*
from tablet1 t1
where exists (select 1 
              from table1 t2 
              where t2.nr = t1.nr and 
                    t2.typNr <> t1.typNr and 
                    t2.artnr like '%mob%'
             );
...