【发布时间】:2013-12-11 22:25:54
【问题描述】:
我有一个存储过程在 SQL Server 2000 中运行良好,但在我们将数据库移动到的 SQL Server 2012 Express 上引发错误。
[SQLServer JDBC 驱动程序][SQLServer]INSERT 语句的选择列表包含的项目少于插入列表。 SELECT 值的数量必须与 INSERT 列的数量相匹配。
谁能帮我解决这个问题?
CREATE PROCEDURE spSelectTopCourses
AS
declare @divisor int
declare @column int
set @column = 6 -- number of columns in the site
create table #tmpID (
CityID int
)
insert into #tmpID (CityID)
Select top 40 -- total number of cities to be shown
c.RID as CityID
From Course c
Inner join StateRegions Sr on Sr.RID = c.RID
Inner join Client_Round cr on cr.CourseID = c.CourseID
Group by c.RID
Order by Count(cr.OrderID) desc
create table #tmp (
CityID int,
CityName varchar(100),
TotalOrder int identity(1,1)
)
insert into #tmp (CityID, CityName, TotalOrder)
Select distinct
sr.RID as CityID,
sr.Rname as CityName
From
#tmpID tid
Inner join StateRegions Sr on Sr.RID = tid.CityID
Group by Sr.RName, sr.RID
Order by sr.RName
select @divisor = ceiling(count(*) * 1.0 / @column)
from #tmp
create table #tmpC (
Position int
)
declare @i int
set @i = 1
while @i <= @divisor * @column
begin
insert into #tmpC(Position)
select @i
set @i = @i + 1
end
select
t.CityID, t.CityName + ' Golf' CityName, cnt.CountryID, c.Position,
(c.Position - 1) % @divisor WebOrder1,
(c.Position - 1) / @divisor WebOrder2
from
#tmpC c
left join #tmp t on t.TotalOrder = c.Position
inner join StateRegions sr on sr.RID = t.CityID
inner join CountryStates cs on cs.StateID = sr.StateID
inner join Country cnt on cnt.CountryID = cs.CountryID
order by WebOrder1, WebOrder2
drop table #tmpC
drop table #tmp
drop table #tmpID
【问题讨论】:
-
答案就在错误信息中:)
-
好吧,我删除了 TotalOrder,一切都很好:-)
标签: sql-server sql-server-2012 sql-server-2000