Re: [SQL ] 請問選取最大值的方法

看板Database (資料庫)作者 (haha)時間18年前 (2006/11/12 23:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《cmccyc (悲慘的生活)》之銘言: : (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) : 資料庫名稱:teradata或 mssql : 資料庫版本: : 內容/問題描述: : 我有一個消費table : ID 餐費 旅行 服飾 : --------------------------------- : a 500 100 200 : b 100 150 300 : c 100 700 300 : 我想要針對每個人選出主要消費的項目 : ID 消費項目 : ---------------- : a 餐費 : b 服飾 : c 旅行 : 請問要如何寫呢 : 謝謝 我的想法可能不是最佳的,但是最直覺的想法,程式部份可能有錯,不過大概 就是那個意思了 如果就只有你說的那些table跟欄位的話,那應該可以這樣 1. 先SELECT INTO消費table每一個資料的MAX到一個temp table 2. 對那個temp table裡面的值回去消費table每個欄位找找,如果有MATCH 的話就把要消費的項目那個table設定成那個column的名字 (如果有一樣的話,只有最後一個名字會被記住) 所以大概是這樣(寫成store procedure) DECLARE @temptable TABLE { ID %DATATYPES%, MAXVALUE %DATATYPES% } 其中%DATATYPES%要根據你的消費table而定 然後 SELECT ID, MAX(餐費,旅行,服飾,...) AS MAXVALUE INTO temptable FROM 消費 這樣temptable應該有每個ID對應之最大值 然後(假設你的主要消費的項目table已經存在且有ID) UPDATE 主要消費的項目 SET 消費項目='餐費' WHERE ID IN ( SELECT 消費.ID FROM 消費, temptable WHEER 消費.ID=temptable.ID AND 消費.餐費 = temptable.MAXVALUE) 這樣一來最大值為餐費的在主要消費的項目table就會被改成餐費 所以依樣畫葫蘆 UPDATE 主要消費的項目 SET 消費項目='旅行' WHERE ID IN ( SELECT 消費.ID FROM 消費, temptable WHEER 消費.ID=temptable.ID AND 消費.旅行 = temptable.MAXVALUE) UPDATE 主要消費的項目 SET 消費項目='服飾' WHERE ID IN ( SELECT 消費.ID FROM 消費, temptable WHEER 消費.ID=temptable.ID AND 消費.服飾 = temptable.MAXVALUE) ... 大概就是這樣,code可能有錯,不過可以以這邊出發想看看~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.209.4 ※ 編輯: retsamsu 來自: 140.113.209.4 (11/12 23:34)
文章代碼(AID): #15LpYAq2 (Database)
文章代碼(AID): #15LpYAq2 (Database)