台灣最大程式設計社群網站
線上人數
1002
 
會員總數:246138
討論主題:189722
歡迎您免費加入會員
討論區列表 >> MS SQL >> A資料表的B日期
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
A資料表的B日期
價值 : 20 QP  點閱數:784 回應數:6
樓主

ChiAng Tsai
門外漢
0 2
60 2
發送站內信

也不知道標題打這樣各位看不看的懂...

有兩個table
A table 是'所有的人'資料表 假設只有5個人
B table 是'所有交易'資料表 假設有無限多的筆數 從2010/1/1~2016/12/31

~~~~~~~~~我是分隔線~~~~~~~~~~

A table:
人員編號 姓名 電話
001 aaa 0910xxx
002 bbb 0912xxx
003 ccc 0916xxx
004 ddd 0980xxx
005 eee 0982xxx

B table:
單據編號 單據日期 人員編號
2016111501 2016/11/15 001
2016111502 2016/11/15 002
2016111001 2016/11/10 002
2016110101 2016/11/01 003
2016103001 2016/10/30 004
2016093001 2016/09/30 001
2016093002 2016/09/30 002
2016093003 2016/09/30 004
.
..
...


想查出 每個人的最後的交易日期就好 就是 只需要5筆資料
如下:
001 2016/11/15
002 2016/11/15
003 2016/11/01
004 2016/10/30
005 null or 空白

搜尋相關Tags的文章: [ 最新日期 ] , [ 交叉 ] ,
本篇文章發表於2016-11-15 13:46
1樓
作者回應

ChiAng Tsai
檢舉此回應
不好意思 補充輸出結果:

想查出 每個人的最後的交易日期就好 就是 只需要5筆資料
如下:
Atable.人員編號 , Atable.姓名 , Atable.電話 , BTable.交易日期
001 aaa 0910xxx 2016/11/15
002 bbb 0912xxx 2016/11/15
003 ccc 0916xxx 2016/11/01
004 ddd 0980xxx 2016/10/30
005 eee 0982xxx null or 空白
本篇文章回覆於2016-11-15 14:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
alter procedure proc_ccc
as

create table #a(
人員編號 nvarchar(50) null,
姓名 nvarchar(50) null,
電話 nvarchar(50) null)

insert #a
select '001','aaa','0910xxx'

insert #a
select '002','bbb','0912xxx'

insert #a
select '003','ccc','0916xxx'

insert #a
select '004','ddd','0980xxx'

insert #a
select '005','eee','0982xxx'

create table #b(
單據編號 nvarchar(50) null,
單據日期 nvarchar(50) null,
人員編號 nvarchar(50) null
)

insert #b select
'2016111501','2016/11/15','001'
insert #b select
'2016111502','2016/11/15','002'
insert #b select
'2016111001','2016/11/10','002'
insert #b select
'2016110101','2016/11/01','003'
insert #b select
'2016103001','2016/10/30','004'
insert #b select
'2016093001','2016/09/30','001'
insert #b select
'2016093002','2016/09/30','002'
insert #b select
'2016093003','2016/09/30','004'


insert #b select
'2016111501','2016/11/12','001'
insert #b select
'2016111502','2016/11/18','002'
insert #b select
'2016111001','2016/12/10','002'
insert #b select
'2016110101','2016/12/01','003'
insert #b select
'2016103001','2016/12/30','004'
insert #b select
'2016093001','2016/12/30','001'
insert #b select
'2016093002','2016/12/30','002'
insert #b select
'2016093003','2016/12/30','004'


insert #b select
'2016111501','2017/11/12','001'
insert #b select
'2016111502','2017/11/18','002'
insert #b select
'2016111001','2017/12/10','002'
insert #b select
'2016110101','2017/12/01','003'
insert #b select
'2016103001','2017/12/30','004'
insert #b select
'2016093001','2017/12/30','001'
insert #b select
'2016093002','2017/12/30','002'
insert #b select
'2016093003','2017/12/30','004'

insert #b select
'2016111501','2018/11/12','001'
insert #b select
'2016111502','2018/11/18','002'
insert #b select
'2016111001','2018/12/10','002'
insert #b select
'2016110101','2018/12/01','003'
insert #b select
'2016103001','2018/12/30','004'
insert #b select
'2016093001','2018/12/30','001'
insert #b select
'2016093002','2018/12/30','002'
insert #b select
'2016093003','2018/12/30','004'



select *,(select count(*) from #b where 單據日期>=t1.單據日期 and 人員編號=t1.人員編號) 資料編號 into #xx
from #b t1 order by 人員編號,(select count(*) from #b where 單據日期<=t1.單據日期 and 人員編號=t1.人員編號)

select * from #xx t1 join #a t2 on t1.人員編號=t2.人員編號 where t1.資料編號<='5'
本篇文章回覆於2016-11-15 17:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

Daimom
捐贈 VP 給 Daimom 檢舉此回應

本篇文章回覆於2016-11-16 11:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
to Daimom 人家要的是最後五筆 不是最後一筆
本篇文章回覆於2016-11-16 13:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
to 真的有點難 不是吧,他是要每個人員的最後一筆資料

看他#1 的結果是這樣
本篇文章回覆於2016-11-16 13:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
哈 那是我錯了 我看成五筆 select max() group by 就下課了
本篇文章回覆於2016-11-16 17:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.