sqlserver2000中的查询

sqlserver2000中的查询,sql,sql-server-2008,sql-server-2000,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(Na

我有两个结构相同的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不支持超过
。编写一个子查询,该子查询按suProforma执行求和(..)分组
,并将子查询连接到suProforma上的主表

我本想为您编写一个使用表的示例,但有两个原因:一个原因是,我在iPhone4上发帖,并重新格式化您的查询(有点乱——您会为自己做更多的事情,保持代码整洁),这是一项非常艰巨的工作;另一个原因是,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
若要将此查询应用于您的情况,请将表1替换为具有suProforma的表,并用实际列更正总和(a*b)。然后将其他联接添加到

如果要分组和求和的列位于不同的表中,则必须编写一个将这两个列链接在一起的查询,并将其粘贴到(用括号括起来)表1中

例如,这两件事是相同的:

SELECT *
FROM table1

SELECT *
FROM (select * from table1) sq1
养成习惯,将查询的FROM部分中的任何实体视为“一个矩形数据块,我可以从中选择结果”


此查询将在SQL Server 2000和2008中工作

您的
from
子句在哪里?@Elham sh,它仅支持wards上的SQL Server 2005。选中下面的链接选择sph.SiProforma、SuProforma、cps.Tp_Family Office_Name、DsProforma、NaProformaFee、NqCount、NaProformaFeeNqCount作为jameradif、SUM(NaProformaFeeNqCount)OVER(按SuProforma划分)作为ghabelepardakht、ssv.Tp_代码描述、DsContract、项目、状态。Tp_代码描述、spd.SiGoods、CtbGdsSpc2.TpGds、CTBGPC2.CuGds、DSU编辑、,ctbservice.TpService from Sls.SlsProformaHeader sph left outer join dbo.Ctb_Persons_specification cps on sph.SiPerson=cps.Si_Persons left outer join Sls.slsproforma detail spd on sph.SiProforma=spd。SiProforma@Mansoor,我知道了,我要一个替补code@elhamsh,提供示例数据和预期输出。'sph'是具有suproforma的表格,“spd”是包含sum列的表。因此,您的示例在我的情况下不起作用。我对我的答案做了一些编辑,但这里有一个关于数据库的基本学习点:在sql中,表(它是一个“数据块”)和子查询(它是一个“数据块”)之间并没有什么区别。如果列位于不同的表中,则将表1交换为返回所需数据的子查询