none
(Sumber: milist SQL Server) Error Function ROW_NUMBER() RRS feed

  • Pertanyaan

  • Dear Para Master SQL,

     

    Mohon pencerahannya. Saya punya sebuah tabel yang rownya sudah sampai 4000 row. Anggaplah tabel tersebut dengan tabel M_PRODUCT.

    Saya mau select row antara 100 sampai 200.
    Saya menggunakan function ROW_NUMBER() OVER (Order By Field). Query yang saya gunakan :

     

    Select ROW_NUMBER() OVER (Order By A.ProductID) As ID, * From M_PRODUCT A Where ID > 100 and ID <= 200

     

    Saat saya execute, error message 195 yang muncul, "ROW_NUMBER" is Not recognized Function Name.

    Mohon pencerahan dari para master. Apa ada yang salah dengan query saya.

     


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 08.58
    Moderator

Jawaban

  •  

    Mungkin maksudnya seperti ini ya?

     

    WITH A AS
    (
        SELECT ROW_NUMBER() OVER (ORDER BY ProductID) AS 'ID', *
        FROM M_PRODUCT
    )
    SELECT *
    FROM A
    WHERE ID > 100 and ID <= 200

     

    Karena query yg di bawah ini tidak betul secara syntax.

     

    Jika ROW_NUMBER tetap tidak terdeteksi sebagai function, mungkin perlu dipastikan bahwa ini hanya berlaku untuk SQL2005 ke atas. Atau mungkin ada setting yang menghalangi akses ke built in function spt ini? Utk yg terakhir ini, saya kurang tahu.

    Dijawab oleh: Erlangga Handoko


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 09.29
    Moderator
  • Dear Para Master,

     

    Mohon maaf sebelumnya. Sepertinya kesalahan ada pada diri saya. Saya lupa kalau saya menggunakan Engine SQL di Komputer Server saya. Server saya menggunakan engine SQL Server 2000.

     

    Setelah saya coba di Engine SQL Server local saya yang menggunakan SQL Server 2008, alhamdulillah bisa baik menggunakan CTE ataupun Sub Query. Kedua-duanya bisa dengan menggunakan Function ROW_NUMBER().

     

    Mohon maaf sebelumnya.

    Terima Kasih atas attensinya.

     


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 09.30
    Moderator

Semua Balasan

  • Perlu di wrap dulu querynya pake CTE atau subquery hal ini karena query diproses all at once jd kolom ID yg digenerate belum exist sehingga belum dikenal oleh WHERE predicate pada query yg sama.

    SELECT * FROM (SELECT ROW_NUMBER...) WHERE ID BETWEEN 100 AND 200

    Dijawab oleh: Alvin


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 09.03
    Moderator
  •  

    Mungkin maksudnya seperti ini ya?

     

    WITH A AS
    (
        SELECT ROW_NUMBER() OVER (ORDER BY ProductID) AS 'ID', *
        FROM M_PRODUCT
    )
    SELECT *
    FROM A
    WHERE ID > 100 and ID <= 200

     

    Karena query yg di bawah ini tidak betul secara syntax.

     

    Jika ROW_NUMBER tetap tidak terdeteksi sebagai function, mungkin perlu dipastikan bahwa ini hanya berlaku untuk SQL2005 ke atas. Atau mungkin ada setting yang menghalangi akses ke built in function spt ini? Utk yg terakhir ini, saya kurang tahu.

    Dijawab oleh: Erlangga Handoko


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 09.29
    Moderator
  • Dear Mas Erlangga,

     

    Sebelumnya saya juga sudah menggunakan CTE, dan juga saub query. Namun masih tetap error mesaage 195.

    Saya menggunakan SQL Standard Edition. Saya lihat di Help SQL Server, SQL Server support function ROW_NUMBER(), tapi knapa waktu saya execute function ROW_NUMBER() malah tidak bisa digunakan.

     

    Jika memang ada settingan yang perlu saya lakukan, mohon pencerahannya dari para master sekalian.


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 09.30
    Moderator
  • Sqlnya pake 2005/2008 kah? Atau masih versi yg lama? Kalo lihat errornya, sepertinya masih pake sql yg lama, atau databasenya masih versi 80 compatibility levelnya

    Dijawab oleh: Deni Kusdeni


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 09.30
    Moderator
  • Dear Para Master,

     

    Mohon maaf sebelumnya. Sepertinya kesalahan ada pada diri saya. Saya lupa kalau saya menggunakan Engine SQL di Komputer Server saya. Server saya menggunakan engine SQL Server 2000.

     

    Setelah saya coba di Engine SQL Server local saya yang menggunakan SQL Server 2008, alhamdulillah bisa baik menggunakan CTE ataupun Sub Query. Kedua-duanya bisa dengan menggunakan Function ROW_NUMBER().

     

    Mohon maaf sebelumnya.

    Terima Kasih atas attensinya.

     


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Senin, 05 Desember 2011 09.30
    Moderator