有一個表:會員卡
欄位: 會員編號,卡號,發卡日期,啟用日期,店鋪
每個會員可能有多個會員卡,現在想按【店鋪】列出 某段期間出啟用會員卡的會員手中會員卡最早的【啟用日期】是否在查詢期內,以此來確認該會員是否為的有效新會員,說的可能啰嗦,主要目的就是統計每個店鋪在某段期間內新增的有效會員。新增有效會員的定義:會員手中所有的會員卡最早的啟用日期在某段期間統計期間內。
這個SQL難倒我了,麻煩高手幫忙,急!!!
uj5u.com熱心網友回復:
現在這臺機器上沒裝資料庫,不過大體上用group by應該是沒錯的,試寫基礎的查詢陳述句如下,借助參考:SELECT 會員編號,MIN(啟用日期) AS 最早啟用日期 FROM [會員卡] GROUP BY 會員編號
uj5u.com熱心網友回復:
舉個例子###### 會員 店鋪 會員卡號 發卡日期 啟用日期
記錄1: 張三 1店 a0001 2013/5/2 2015/2/1
記錄2 :張三 3店 c0033 2015/2/5 9999/12/31
記錄3: 張三 2店 b0008 2013/3/6 2014/3/31
記錄4: 李四 1店 a0002 2013/4/5 2015/1/28
記錄5; 王二 2店 b0005 2014/9/10 2015/1/31
假設 提取2014年新增有效會員,提取后應得到 記錄3
提取2015年新增有效會員,提取后應得到 記錄4、記錄5
這個sql應該怎么寫呢 謝謝!
uj5u.com熱心網友回復:
就是選擇開戶日期在兩個日期之間對吧?用select AA from TABLE where date between date1 and date2
uj5u.com熱心網友回復:
這樣【會員】會有重復 用distinct 又得不到完整的記錄(所有欄位都要)
uj5u.com熱心網友回復:
手工做法是1 取得所有某個期間啟用的會員卡的會員(無重復)
2 查到1中會員所有會員卡的最早啟用日期
3 如果2的最小啟用日期在某個期間內,確認是這個期間新增的有效會員
第1步可有可無,不過這樣可以減少第2部的查詢量(我自己認為的)
實際bcrun給出的陳述句基本實作了所需的功能,但是,group by 不能取得記錄的所有欄位,并且如何在group by 中 過濾最小啟用日期 也是我沒能解決的
uj5u.com熱心網友回復:
暈了。這要求應該按斬訓員卡的卡號來列吧。不能按斬訓員名稱來,因為存在“同名不同人”的情況。
按斬訓員卡的卡號來串列,相應會簡單許多的......
uj5u.com熱心網友回復:
提取2014年新增有效會員,提取后應得到 記錄3select * from 會員卡 t
where 啟用日期 between #2014/1/1# and #2014/12/31#
and not exists (select 1 from 會員卡 where 會員卡號=t.會員卡號 and 啟用日期<#2014/1/1#)
提取2015年新增有效會員,提取后應得到 記錄4、記錄5
select * from 會員卡 t
where 啟用日期 between #2015/1/1# and #2015/12/31#
and not exists (select 1 from 會員卡 where 會員卡號=t.會員卡號 and 啟用日期<#2015/1/1#)
uj5u.com熱心網友回復:
主帖說"有一個表:會員卡
欄位: 會員編號,卡號,發卡日期,啟用日期,店鋪"
會員編號或卡號都不應該有重復的吧
uj5u.com熱心網友回復:
就是選擇開戶日期在兩個日期之間對吧?
用select AA from TABLE where date between date1 and date2
這樣【會員】會有重復 用distinct 又得不到完整的記錄(所有欄位都要)
主帖說"有一個表:會員卡
欄位: 會員編號,卡號,發卡日期,啟用日期,店鋪"
會員編號或卡號都不應該有重復的吧
卡號無重復 會員編號有重復 一個人可能有多個編號 歷史原因
uj5u.com熱心網友回復:
提取2014年新增有效會員,提取后應得到 記錄3
select * from 會員卡 t
where 啟用日期 between #2014/1/1# and #2014/12/31#
and not exists (select 1 from 會員卡 where 會員卡號=t.會員卡號 and 啟用日期<#2014/1/1#)
提取2015年新增有效會員,提取后應得到 記錄4、記錄5
select * from 會員卡 t
where 啟用日期 between #2015/1/1# and #2015/12/31#
and not exists (select 1 from 會員卡 where 會員卡號=t.會員卡號 and 啟用日期<#2015/1/1#)
t表是?
uj5u.com熱心網友回復:
如果有人同名的話怎么辦,哈哈uj5u.com熱心網友回復:
太深奧的sql陳述句我不會,不過我覺得可以先把同名的多余記錄刪掉得到一個臨時表,然后就簡單多了轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/101113.html
標籤:VB基礎類
上一篇:請問vb6怎樣顯示accdb檔案中ole物件及附件欄位中的圖片?
下一篇:求教excel組合框的使用~!
