none
問個SQL語法的笨問題 RRS feed

  • 問題

  •  

    請教各位先進...

     

      若我想抓取資料表中第 100列的資料,其SQL語法要如何寫呢?

      謝謝!

    2007年11月16日 上午 08:21

解答

  • 請使用 Fetch 指令來取得 Cursor 的資料,如下所示即是您所要的第 100 列之資料:

     

    程式碼區塊

    USE AdventureWorks;
    GO

     

    -- 定義一個 CURSOR
    DECLARE contact_cursor SCROLL CURSOR FOR
    SELECT LastName, FirstName FROM Person.Contact
    WHERE LastName LIKE 'B%'
    ORDER BY LastName;

     

    -- 開啟 CURSOR
    OPEN contact_cursor;

     

    -- 讀取位於 CURSOR 絕對位置裡第 100 列之資料
    FETCH ABSOLUTE 100 FROM contact_cursor;

     

    -- 關閉並釋放 CURSOR
    CLOSE contact_cursor;
    DEALLOCATE contact_cursor;


    GO

     

    2007年11月17日 上午 03:22
    版主
  • 不好意思,少打了欄位,請改成。

     

    程式碼區塊

    select top 1 filed1 from

    (selct top 100 filed1 from tablename order by filed desc) as aa

    order by filed

     

     

    2007年11月19日 上午 01:07
  • Dear Sir,

     

    SQL Server 2005的新功能

     

    USE AdventureWorks;
    GO
    WITH OrderedOrders AS
    (
        SELECT SalesOrderID, OrderDate,
        ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
        FROM Sales.SalesOrderHeader
    )
    SELECT *
    FROM OrderedOrders
    WHERE RowNumber =100;

     

    Best regards,

    Colin Lin

    微軟技術支援中心
    2007年11月19日 上午 04:04

所有回覆

  • 請使用 Fetch 指令來取得 Cursor 的資料,如下所示即是您所要的第 100 列之資料:

     

    程式碼區塊

    USE AdventureWorks;
    GO

     

    -- 定義一個 CURSOR
    DECLARE contact_cursor SCROLL CURSOR FOR
    SELECT LastName, FirstName FROM Person.Contact
    WHERE LastName LIKE 'B%'
    ORDER BY LastName;

     

    -- 開啟 CURSOR
    OPEN contact_cursor;

     

    -- 讀取位於 CURSOR 絕對位置裡第 100 列之資料
    FETCH ABSOLUTE 100 FROM contact_cursor;

     

    -- 關閉並釋放 CURSOR
    CLOSE contact_cursor;
    DEALLOCATE contact_cursor;


    GO

     

    2007年11月17日 上午 03:22
    版主
  • 你可以使用下列的語法試試看:

     

    程式碼區塊

    select top 1 from

    (selct top 100 from tablename order by filed desc) as aa

    order by filed

     

     

    2007年11月18日 上午 06:00
  •  Cary Hsu 寫信:

    你可以使用下列的語法試試看:

     

    程式碼區塊

    select top 1 from

    (selct top 100 from tablename order by filed desc) as aa

    order by filed

     

     

    這樣用會出現錯誤訊息:

    訊息 156,層級 15,狀態 1,行 1
    接近關鍵字 'from' 之處的語法不正確。

    2007年11月18日 上午 06:27
  • 不好意思,少打了欄位,請改成。

     

    程式碼區塊

    select top 1 filed1 from

    (selct top 100 filed1 from tablename order by filed desc) as aa

    order by filed

     

     

    2007年11月19日 上午 01:07
  • Dear Sir,

     

    SQL Server 2005的新功能

     

    USE AdventureWorks;
    GO
    WITH OrderedOrders AS
    (
        SELECT SalesOrderID, OrderDate,
        ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
        FROM Sales.SalesOrderHeader
    )
    SELECT *
    FROM OrderedOrders
    WHERE RowNumber =100;

     

    Best regards,

    Colin Lin

    微軟技術支援中心
    2007年11月19日 上午 04:04