这里为什么不能加括号?
表TradeTable如下:CustomereId int, TradeTime datetime, TransMoney money
现在想取得每月交易金额最大的客户的客户号(要求使用表变量)
declare @t table(CustomereId int, TotalMoney money)
insert into @t
-----------------------------------------------
(select CustomereId, sum(TransMoney) as total
from TradeTable
where datediff(mm,TradeTime,getdate()) = 0
group by CustomereId
order by total desc)
-------------------------------------------------
select top 1 CustomereId from @t
运行失败,但是去掉注释线间的代码的括号后,就运行成功,即
declare @t table(CustomereId int, TotalMoney money)
insert into @t
select CustomereId, sum(TransMoney) as total
from TradeTable
where datediff(mm,TradeTime,getdate()) = 0
group by CustomereId
order by total desc
select top 1 CustomereId from @t
不知道为什么会这样?请哪位能指点一二 ,谢谢
------解决方案--------------------不是不能把结果集括起来,这个要看具体情况的。
比如insert的语法就是insert into table1 select fieldlist from table2
这种情况下肯定不能加()
而select * from (select top 1 * from table1)a
这种情况下就必须加()了
------解决方案--------------------往表里插入值的时候,如果是用Insert开头的话,只有后面跟有Value的,才需要用括号 。
如果是把一个查询的结果集插入的话,就不需要括号。
这是语法规定的,没有原因。