因為它並未包含在彙總函式或group by子句中、SQL分組、SQL 資料 分群在PTT/mobile01評價與討論,在ptt社群跟網路上大家這樣說
因為它並未包含在彙總函式或group by子句中在[SQL ] 請教這個要怎麼下查詢語法?- 看板Database
MS SQL 2000 sp3
我有個資料表與其資料樣本如下
[memberconsume]
cid 交易序號
mid 會員序號
cdate 交易日期
ap 獲得點數
up 使用點數
sp 結餘點數
[memberconsume]
cid mid cdate ap up sp
1 1 2013-1-1 5 0 5
2 2 2013-1-2 7 0 7
3 3 2013-1-3 15 0 15
4 2 2013-1-4 10 2 15
5 1 2013-1-5 5 0 10
6 1 2013-1-6 0 10 0
7 2 2013-1-7 8 0 23
8 3 2013-1-8 0 15 0
9 1 2013-1-9 20 0 20
10 1 2013-2-1 13 15 18
11 2 2013-3-1 10 0 33
12 2 2013-4-1 0 11 22
我想要查目前哪些會員的點數(sp)已經為 0,而且要顯示最後一次交易記錄。
請問這該怎麼一次就查出來?
我對sql 語法不太熟,目前的做法感覺蠻差的,先簡單撈出來,
然後再由程式過濾,這樣處理速度有點慢。
感謝大家
*********************************
最後寫出來了
SELECT MemberConsume.cid, MemberConsume.mid, MemberConsume.sp
FROM MemberConsume INNER JOIN
(SELECT MAX(MemberConsume_1.cid) AS CN
FROM MemberConsume AS MemberConsume_1 INNER JOIN
Member ON MemberConsume_1.mid = Member.mid
GROUP BY MemberConsume_1.mid) AS MCA ON MemberConsume.cid = MCA.CN
WHERE (MemberConsume.sp = 0)
謝謝大家的提示
--
◆ From: 122.116.191.176
推 moyasi:先找出每個會員最近一天的交易記錄 06/09 12:04
→ moyasi:再篩選你要的條件 06/09 12:04
→ lbeeon:SELECT DISTINCT(mid), MAX(cdate) from table where sp=0 06/09 18:54
→ lbeeon:大概這樣的意思 我沒測試過.. 06/09 18:55
→ mywheat:TO moyasi , 我想,我的問題點就卡在這邊不會下 ^^;; 06/10 09:01
→ mywheat:to lbeeon, 這語法沒過。"資料行 'mid' 在選取清單中無效 06/10 09:03
→ mywheat:因為他並未包含在彙總函式或 GROUP BY 子句中" 06/10 09:03