none
請問各位大大有關SQL查詢語法問題 RRS feed

  • 問題

  • 請問各位大大:

    有關SQL查詢語法問題

    我有一張SQL表單

    我要查詢

    1.不同料號中最近一筆的料號的異動數量 必須顯示它的異動日 料號 異動數量 平均成本 來源單別 這五個欄位值

    因為來源單別有好幾種雖然做了GROUP BY 但是有些問題

    這是我寫的程式碼

    SELECT     異動日, 料號, 異動數量, 平均成本, 來源單別
    FROM         異動單
    WHERE     (入庫庫別 IS NOT NULL) AND (入庫庫別 <> '') AND (來源單別 = '生產入庫單' OR
                          來源單別 = '重工入庫單' OR
                          來源單別 = '託外入庫單' OR
                          來源單別 = '進口進貨單' OR
                          來源單別 = '進貨單' OR
                          來源單別 = '製令退料單')
    ORDER BY 料號

    請各位大大指教

    我要如何在以上的表單中求取不同 異動日, 料號, 異動數量, 平均成本, 來源單別 中的最大值

    程式碼該如何寫呢?謝謝

    感謝各位大大指教

    2015年3月11日 上午 03:29

解答

  • 1.你就把 異動日, 料號用row_number 以異動日做排序去編號,最後where 編號 = 1的 就是料號最新異動日了

    2.求取不同 異動日, 料號, 異動數量, 平均成本, 來源單別 中的最大值

    select 異動日, 料號, 異動數量, 來源單別  ,max(平均成本) as 平均成本

    from table

    group by 異動日, 料號, 異動數量, 來源單別

    • 已提議為解答 亂馬客 2015年3月12日 上午 10:26
    • 已標示為解答 璉璉Moderator 2015年3月21日 上午 03:39
    2015年3月11日 上午 04:34
  • 有 GROUP BY 就用

    MAX(異動日)

    即可


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已提議為解答 亂馬客 2015年3月12日 上午 10:26
    • 已標示為解答 璉璉Moderator 2015年3月21日 上午 03:39
    2015年3月11日 下午 12:56

所有回覆

  • 1.你就把 異動日, 料號用row_number 以異動日做排序去編號,最後where 編號 = 1的 就是料號最新異動日了

    2.求取不同 異動日, 料號, 異動數量, 平均成本, 來源單別 中的最大值

    select 異動日, 料號, 異動數量, 來源單別  ,max(平均成本) as 平均成本

    from table

    group by 異動日, 料號, 異動數量, 來源單別

    • 已提議為解答 亂馬客 2015年3月12日 上午 10:26
    • 已標示為解答 璉璉Moderator 2015年3月21日 上午 03:39
    2015年3月11日 上午 04:34
  • 有 GROUP BY 就用

    MAX(異動日)

    即可


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已提議為解答 亂馬客 2015年3月12日 上午 10:26
    • 已標示為解答 璉璉Moderator 2015年3月21日 上午 03:39
    2015年3月11日 下午 12:56
  • 你這個table有ID column嗎?

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆標示為解答以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to clickMark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2015年3月12日 上午 03:01
  • 我有點看不太懂您要的東西,
    不過,
    請看一下以下是否是您要的:
    我的作法是先查出條件的Table後,
    再對原始資料進行查詢
    ------------------------------


    declare @Filter table(異動日 datetime,料號 nvarchar(50))

    insert @Filter
    select Max(異動日) as 異動日 , 料號
    from 異動單
    WHERE 入庫庫別 IS NOT NULL
    AND 入庫庫別 <> ''
    AND 來源單別 in ('生產入庫單','重工入庫單','託外入庫單' ,'進口進貨單','進貨單','製令退料單')
    group by 料號

    select Record.異動日, Record.料號, Record.異動數量, Record.平均成本, Record.來源單別
    from 異動單 as Record
     inner join @Filter as Filter on Filter.料號=Record.料號 And Filter.異動日=Record.異動日
    WHERE Record.入庫庫別 IS NOT NULL
    AND Record.入庫庫別 <> ''
    AND Record.來源單別 in ('生產入庫單','重工入庫單','託外入庫單' ,'進口進貨單','進貨單','製令退料單')


    2015年3月12日 上午 09:25