Привет всем, Я немного борется с выражением выбора, и я надеялся получить некоторую помощь. В настоящее время у меня есть список IP-адресов во временной таблице, и я хочу рассчитать, сколько раз этот IP-сервер действует как сервер и сколько раз он действует как клиент. Независимо от того, как я манипулирую этим предложением select, я всегда получаю ту же ошибку, указывающую, что ServerCount - это недопустимый столбец, независимо от того, что я заменяю нулями. Вот выдержка:sql inested select invalid column
select IPS, sum (ClientCount) as ClientCount, sum(ServerCount) as ServerCount
from (
select IP as IPS, Count(*) as ClientCount, null
from table1 join temp_table
on table1.client_ip = temp_table.IP
group by IP
union all
select null,IP as IPS, Count(*) as ServerCount
from table1 join temp_table
on table.server_ip = temp_table.IP
group by IP
)t
group by IPS, ClientCount, ServerCount
первая половина и вторая половина работают независимо без союза. Любые идеи относительно того, что вызывает эту ошибку? Также, если я использую Nulls, я также получаю вторую ошибку. Ниже приведена полная ошибка с нулями:
Msg 8155, уровень 16, состояние 2, строка 1 Для столбца 3 't' не указан столбец. Msg 207, уровень 16, состояние 1, строка 13 Недопустимое имя столбца 'ServerCount'. Msg 207, уровень 16, состояние 1, строка 1 Недопустимое имя столбца 'ServerCount'.
Спасибо.
Я укажу, что при использовании NUll в объединении для создания столбца при первом выборе он будет по умолчанию иметь целочисленный тип данных. Это нормально для этого, но если это было поле varchar или date или decimal, которое вы хотели, вы должны использовать что-то вроде CAST (null как varchar (10)). – HLGEM
Сравните ваш SQL с ответом, который был задан, когда вы задали [этот вопрос] (http://stackoverflow.com/questions/3918349/how-to-count-multiple-fields-in-sql), и вы увидите, что IP должен быть первым столбцом в операторах SELECT. –