繁体   English   中英

SQL Server 2000中的查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM