在SQL Server 2000中查询

时间:2017-05-20 05:49:11

标签: sql sql-server-2008 sql-server-2000

我有两个结构相同的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'附近的语法不正确。

我该如何解决?或者替换代码?

1 个答案:

答案 0 :(得分:0)

SQL Server 2000不支持OVER。编写一个执行SUM(..) GROUP BY suProforma的子查询,并将子查询加入su​​Proforma上的主表

我已经为你使用你的牌写了一个例子,但有两个原因:一个是我从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