嘿所有, 我一直在努力与选择语句现在一点,我希望得到一些帮助。我目前在临时表中有一个IP列表,我想计算这个IP作为服务器的次数,以及它作为客户端的次数。不管我如何操作这个select语句,我总是会得到同样的错误,告诉我ServerCount是一个无效列,无论我用什么替换null。这里是选择声明:SQL嵌套选择无效列
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
上半年和下半年独立工作没有工会。任何想法是什么导致这个错误?另外,如果我使用空值,我也会得到第二个错误。这里是空位的完整错误:
Msg 8155,Level 16,State 2,Line 1 't'的第3列未指定任何列。 消息207,级别16,状态1,行13 无效的列名称'ServerCount'。 消息207,级别16,状态1,行1 无效的列名称“ServerCount”。
谢谢。
我会指出,当你在第一个选择中使用联合中的NUll创建列时,它将默认为整数数据类型。这很好,但如果它是一个varchar或日期或十进制字段,你应该使用类似CAST(null作为varchar(10))。 – HLGEM 2010-10-14 21:41:52
比较你的SQL与你问[这个问题]时给出的答案(http://stackoverflow.com/questions/3918349/how-to-count-multiple-fields-in-sql),你会看到IP应该是两个SELECT语句中的第一列。 – 2010-10-14 21:44:46