Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and the Yahoo Answers website is now in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

請問一SQL語法

TABLE:

S  A  B  C  D  E ......

6.2 7.2 9.1 6.9  8  5.8 ......

表中欄位數不定,我想求 min{│S - A│,│S - B│,│S - C│...},並推得它的索引值,經過計算應該是E,但是應該如何用SQL語法寫出來呢?

且語法中不要出現S,A,B...等字眼,請問有辦法用Column,Row等來表示嗎?因為ABCDE之後還有非常多筆資料,如果一個一個的打相減和取絕對值語法,將會非常繁雜,且將不能套用到其他的資料表中,

我到現在還都只會笨笨的一個一個打,就算求出最小值了也沒法推回去知道索引值是什麼,在此懇請各位高手的指教,謝謝。

Update:

謝謝大師的提醒,那如果說不要用SQL寫,改用VB或其他程式語言寫該怎麼做呢?

Update 2:

路人甲您好,原來這個問題可以用SQL寫出來,其實不管用什麼寫,只要能求出結果就可以了,我是比較偏向取得SQL的結果,因為我程式的後續動作需要以這筆SQL傳出的結果再下SQL指令,無奈卡在這個地方,若您有空的話,可否幫我解決這個問題,謝謝您的指教。

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    阿戊 大哥 容小弟放肆一下 Sorry

    =============

    SQL 語法是可以做到的,但提問大大似乎轉移了問題的方向

    令人不知是否要正式回答與否,因為我不會寫VB

    註LMSSQL可以得知Table內所有 Column 屬性

    利用 CURSOR 指令 寫在 自定 Function 內 可以達到目的

    2008-06-02 00:19:34 補充:

    ok 那我就獻醜了,不對之處還請高手指教補充

    再廢話一番:如果提問大大無法理解以下指令用法說明,還是建議您改走VB路線

    因為採用MSSQL的方法來解決這個問題就好像牛刀殺雞.

    =====

    Create 一個 使用者自定函數 Function ,Result 答案--最小值

    Function 內容如下:

    DECLARE @RLT decimal(10,2)

    1.利用 資料指標(CURSOR), 行成回圈(LOOP)

    2.配合此段 TransACT

    由 sysobjects 合 syscolumns 2個 系統Table 可以得知 指定 Table 的所有 column name

    語法: Select c.name from sysobjects t, syscolumns c where t.name='YOUR_TABLE_NAME' and t.id=c.id

    註:Table syscolumns 記載欄為屬性,必要時 可用 Where,order 語法過濾/排序

    3.RETURN (最小值)

    =====

    應用: Select dbo.YOUR_FUNCTION_NAME()

    以下我摘取一段CURSOR的應用語法提供參考

    DECLARE @xxx int

    select @xxx=0

    DECLARE tnames_cursor CURSOR FOR SELECT * FROM HomeDB Where ssn > 100140

    OPEN tnames_cursor

    FETCH NEXT FROM tnames_cursor

    WHILE (@@fetch_status <> -1)

    BEGIN

     IF (@@fetch_status <> -2)

     BEGIN

       EXEC aaa

       Select @xxx=@xxx+1

     END

     FETCH NEXT FROM tnames_cursor

    END

    Select @xxx

    DEALLOCATE tnames_cursor

    2008-06-02 00:26:38 補充:

    對不起 ,發言失當

    我本意是指 耗費的精力/時間 去學習 MSSQL 的 資料指標(CURSOR) 用法,

    所費無行成本,倒不如加強VB的功力來的更有效率.

    畢竟MSSQL的 Trigger/SP/function/View 是另一個範疇

  • 阿戊
    Lv 7
    1 decade ago

    問 SQL 不能用欄位名稱 還要用 Column,Row...@@

    你把Grid和你要問的東東混淆了吧! 純 SQL語法 應該沒辦法做到你這種"特殊需求"~

Still have questions? Get your answers by asking now.