簡體   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