因為它並未包含在彙總函式或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
