我有两个结构相同的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'附近的语法不正确。
我该如何解决?或者替换代码?
答案 0 :(得分:0)
SQL Server 2000不支持OVER
。编写一个执行SUM(..) GROUP BY suProforma
的子查询,并将子查询加入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