![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 chykie ![]()
![]() |
欄1 欄2 欄3 11 22 1 11 22 2 11 22 3 22 33 1 ..... 資料表2,有索引欄與欄4,例如 欄4 1 2 3 4 ..... 請問要如何以(欄1+欄2)相同的為一組,對各組進行查詢欄4的最小值(日期),然後輸出對應該最小值的索引值 |
1樓 |
類似以下寫法:
SELECT 資料表1.Field1, 資料表1.field2, Min(資料表2.Field4) AS Field4之最小值 FROM 資料表2 INNER JOIN 資料表1 ON 資料表2.Field4 = 資料表1.field3 GROUP BY 資料表1.Field1, 資料表1.field2;
本篇文章回覆於2021-11-03 11:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
chykie ![]() |
謝謝您的回覆,可能是我資料給得不完整
資料表1應當是 索引欄 欄1 欄2 欄3 資料表2則為 索引欄 欄4 兩個資料表間是透過索引欄聯結的,基本上資料表1中的欄3在這個問題中是沒有作用 所以依您的說明,是否應當改為如下呢? SELECT 資料表2.索引欄, Min(資料表2.Field4) AS Field4之最小值 FROM 資料表2 INNER JOIN 資料表1 ON 資料表2.索引欄 = 資料表1.索引欄 GROUP BY 資料表1.Field1, 資料表1.field2;
本篇文章回覆於2021-11-04 19:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
那現在的訊息是什麼呢?
本篇文章回覆於2021-11-08 18:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
依您的資料
在 SELECT 資料表1.field1, 資料表1.field2, Min(資料表1.field3) AS field3之最小值 FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.field3 = 資料表2.Field4 GROUP BY 資料表1.field1, 資料表1.field2; 出來的 答案是 共二筆 11 22 1 22 33 1
本篇文章回覆於2021-11-08 18:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓
作者回應
chykie ![]() |
P大您新給的SQL中,似乎有點出入的樣子,
因為要判斷最小值的對象是欄4,不是欄3 然後想獲得的值是索引欄的值 後來我採用了另一個方式, 先用一個查詢獲得 每一個群組的最小欄4值 因為每一個群組會對應到多筆資料,所以會有多筆索引欄的值,無法在第一個查詢中直接取得所要的索引欄的值 所以再用另一個查詢 將第一個查詢的結果,進一步過濾出每一個最小欄4值所對應的索引欄的值 這樣雖然可以獲得預想得到的值,但也會有多出來的(因為最小欄4值會有重覆的)
本篇文章回覆於2021-11-10 17:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓 |
您最初給的資料中沒有放索引欄的值 我當然就跳過去了
您將索引欄的資料也放上來,我們再來對看看
本篇文章回覆於2021-11-18 17:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓 |
然後你要的是 資料表1的索引欄 還是要資料表2的索引欄
再將以你的資料作出來的 結果會是什麼也請提示一下
本篇文章回覆於2021-11-18 17:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓
作者回應
chykie ![]() |
目前採用的方式如下
資料表1 索引欄 欄1 欄2 欄3 …. 1 A BB 100 2 A BB 101 3 C BB 101 4 C BB 100 5 C BB 103 資料表2 索引欄 欄4 1 2020/01/01 2 2020/01/03 3 2020/05/01 4 2020/05/03 5 2020/05/09 兩個資料表的索引欄已建立關聯 建立查詢1,結合資料表1+資料表2 以欄1+欄2為組,查詢欄4的最小值,並輸出欄1、欄2與欄4的值 結果為 欄1 欄2 欄3 A BB 2020/01/01 C BB 2020/05/01 建立查詢2,結合查詢1+資料表1+資料表2 以 查詢1欄1=資料表1欄1 + 查詢1欄2=資料表1欄2 + 查詢1欄3=資料表2欄4 的連結條件, 輸出資料表1中對應的索引欄值 (就算是輸出資料表2的索引欄值,理論上應該也是一樣的值) 結果為 1 3
本篇文章回覆於2021-11-19 15:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
最有價值解答
P陳 ![]() |
識別碼就是你的索引欄
有三種答案 出來的答案跟您的提示的一樣 SELECT 資料表1.field1, 資料表1.field2, Min(資料表2.Field4) AS Field4之最小值 FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.識別碼 = 資料表2.識別碼 GROUP BY 資料表1.field1, 資料表1.field2; SELECT 資料表1.field1, 資料表1.field2, Min(資料表2.Field4) AS Field4之最小值, Min(資料表1.識別碼) AS 識別碼之最小值 FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.識別碼 = 資料表2.識別碼 GROUP BY 資料表1.field1, 資料表1.field2; SELECT Min(資料表1.識別碼) AS 識別碼之最小值 FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.識別碼 = 資料表2.識別碼 GROUP BY 資料表1.field1, 資料表1.field2;
本篇文章回覆於2021-11-20 08:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |