[英]Query in SQL Server 2000
我有2个具有相同结构的SQL Server数据库,第一个在SQL Server 2008中,另一个在SQL Server 2000中。
我在SQL Server 2008中这样写了一个查询:
SELECT
sph.SiProforma, SuProforma, cps.Tp_FamilyOffice_Name,
DsProforma, NaProformaFee, NqCount,
NaProformaFee * NqCount as jameradif,
SUM(NaProformaFee * NqCount) OVER (PARTITION BY suProforma) AS ghabelepardakht
它可以在SQL Server 2008中运行,但是当我在SQL Server 2000中运行它时,出现此错误:
关键字“ OVER”附近的语法错误。
我该如何解决? 还是替换代码?
SQL Server 2000不支持OVER
。 编写一个执行SUM(..) GROUP BY suProforma
的子查询,并将该子查询加入SUM(..) GROUP BY suProforma
上的主表
我已经为您编写了一个使用表的示例,但是有两个原因:一个,我从iPhone 4发布并重新格式化您的查询(这有点混乱-您会更加努力地保持代码整洁)是非常非常艰苦的工作,而且2,将suProforma列保存在哪个表中并不明显
这是一个可以应用于查询的简单示例:
SELECT
t1.*,
sq1.summed
FROM
table1 t1
INNER JOIN
(SELECT sum(a*b) as summed FROM table1 GROUP BY suProforma) sq2 ON T1.suProforma = sq2.suProforma
将此查询应用于您的情况,将table1替换为具有suProforma的表,并使用实际列更正SUM(a * b)。 然后在其中添加其他联接
如果您要按其分组和求和的列位于不同的表中,那么您将必须编写一个将两者链接在一起的查询并将其粘贴在(用括号括起来)代替table1
例如,这两件事是相同的:
SELECT *
FROM table1
SELECT *
FROM (select * from table1) sq1
养成在查询的FROM部分中将任何实体视为“只是可以选择结果的矩形数据块”的习惯
此查询将在SQL Server 2000和2008中均适用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.