SQL語法的問題 |
答題得分者是:kadee
|
frappe
中階會員 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
我使用SQL-Server 2005 Express
其中一張Table欄位如下: vi01 varchar 客戶編號 vi02 datetime 日期 vi03 varchar 地點 vi04 varchar 內容 sysupdate datetime 更新日期 我想要用vi02查詢2個月內沒有拜訪過的客戶 select vi01,max(vi02) as maxdate from visit group by vi01 可以查出每個客戶最近一次拜訪日期, 但是我try好久不知道2個月條件要怎麼加進去 |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
[code delphi] declare @temp table(vi01 varchar(3),vi02 datetime,vi03 varchar(6),vi04 varchar(10),sysupdate datetime) insert @temp select '001',Cast('20081116' as datetime),'台北','XXX',GetDate() insert @temp select '002',Cast('20081216' as datetime),'台中','XXX',GetDate() insert @temp select '003',Cast('20090101' as datetime),'高雄','XXX',GetDate() select vi01,max(vi02) LastVis from @temp where vi02<DateAdd(m,-2,GetDate()) group by vi01 [/code] ===================引 用 frappe 文 章=================== 我想要用vi02查詢2個月內沒有拜訪過的客戶 |
frappe
中階會員 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
這樣好像一筆一筆插入資料,好像怪怪的@@?
我寫一次寫stored procedure : declare @temp table(vi01 varchar(10),vi02 datetime) insert @temp select vi01,max(vi02) as maxdate from visit group by vi01 select * from @temp where vi02 這樣可以找出vi02,但是vi03,vi04就不知道要如何顯示資料 可以自己join自己嗎@@? ===================引 用 pedro 文 章=================== [code delphi] declare @temp table(vi01 varchar(3),vi02 datetime,vi03 varchar(6),vi04 varchar(10),sysupdate datetime) insert @temp select '001',Cast('20081116' as datetime),'台北','XXX',GetDate() insert @temp select '002',Cast('20081216' as datetime),'台中','XXX',GetDate() insert @temp select '003',Cast('20090101' as datetime),'高雄','XXX',GetDate() select vi01,max(vi02) LastVis from @temp where vi02group by vi01 [/code] |
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
SELECT VI_01, LastVis, VI03, VI04 FROM(
select vi01 VI_01,max(vi02) LastVis from @temp where vi02 group by vi01), @temp WHERE VI_01=VI01 AND LastVis=VI02; 我沒有測試, Please test it !
------
What do we live for if not to make life less difficult for each other? |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
有一行被此論壇的程式給蓋掉了,
我小於改用全形 一行行insert只是測試資料 select vi01,max(vi02) LastVis,vi03,vi04 from @temp where vi02<DateAdd(m,-2,GetDate()) group by vi01,vi03,vi04 ===================引 用 frappe 文 章=================== 這樣好像一筆一筆插入資料,好像怪怪的@@? 我寫一次寫stored procedure : declare @temp table(vi01 varchar(10),vi02 datetime) insert @temp select vi01,max(vi02) as maxdate from visit group by vi01 select * from @temp where vi02 這樣可以找出vi02,但是vi03,vi04就不知道要如何顯示資料 可以自己join自己嗎@@?
編輯記錄
pedro 重新編輯於 2009-02-17 14:05:09, 註解 無‧
|
kadee
高階會員 發表:11 回覆:141 積分:165 註冊:2002-03-20 發送簡訊給我 |
select a.vi01 from visit a
where not exists (select 1 from visit b where b.vi01 = a.vi01 and b.vi02>='2009/1/1') 我沒有ms- sql ,請自行測試 Kadee / www.bigredinf.net ===================引 用 frappe 文 章=================== 我使用SQL-Server 2005 Express 其中一張Table欄位如下: vi01 varchar 客戶編號 vi02 datetime 日期 vi03 varchar 地點 vi04 varchar 內容 sysupdate datetime 更新日期 我想要用vi02查詢2個月內沒有拜訪過的客戶 select vi01,max(vi02) as maxdate from visit group by vi01 可以查出每個客戶最近一次拜訪日期, 但是我try好久不知道2個月條件要怎麼加進去
------
Kadee/BigRed Ent. www.tw165.com |
frappe
中階會員 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
Kadee大大真是太厲害了,
原來還可以用not exists可以解決我的問題,謝謝啦^^ ===================引 用 kadee 文 章=================== select a.vi01 from visit a where not exists (select 1 from visit b where b.vi01 = a.vi01 and b.vi02>='2009/1/1') 我沒有ms- sql ,請自行測試 Kadee / www.bigredinf.net |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |