iT邦幫忙

0

ms sql 跨資料表查詢並總計

各位先進好,小弟剛學SQL有個問題在處理。
A資料表如下
nobr|dept|date
0001|0001|2018/05/02
0001|0001|2018/10/10
0002|0003|2018/03/10
0002|0003|2018/04/24
0003|0002|2018/11/22
0004|0001|2018/01/01

B資料表如下
dept|dept_name
0001|ABC
0002|CDE
0003|FGH

利用sql查詢,
1.查詢出A資料表每個nobr的最新一筆date資料<-OK(已可計算出來)
2.由上個查詢出的資料,列出B資料表中dept的各項總計。

列出總表
dept|dept_name|count
0001|ABC______|3
0002|CDE______|1
0003|FGH______|2
更正如下(感謝1F大大支援,剛剛發現我列出總表的內容錯...)
dept|dept_name|count
0001|ABC______|2
0002|CDE______|1
0003|FGH______|2
目前想法是,將A資料表彙整查詢資料存入#temp,在用B資料表into #temp,接著做count計算,但一直失敗...懇請指教

0001|ABC______|2,的2怎麼來的?
怎麼看都應該是三阿
lu760423 iT邦新手 4 級 ‧ 2018-12-28 14:53:47 檢舉
001重複算一筆

1 個回答

0
純真的人
iT邦高手 1 級 ‧ 2018-12-27 14:01:11
最佳解答

恩...

declare @a table(
	nobr varchar(10)
	,dept varchar(10)
	,[date] date
)

declare @b table(
	dept varchar(10)
	,dept_name varchar(10)
)

insert into @a
values('0001','0001','2018/05/02')
,('0001','0001','2018/10/10')
,('0002','0003','2018/03/10')
,('0002','0003','2018/04/12')
,('0003','0002','2018/11/22')
,('0004','0001','2018/01/01')

insert into @b
values('0001','ABC')
,('0002','CDE')
,('0003','FGH')

select b.dept
,dept_name
,count(*) as [count]
from @b b
left join @a a on a.dept = b.dept
group by b.dept
,dept_name


https://ithelp.ithome.com.tw/upload/images/20181227/20061369ZR8UnEGryF.png

lu760423 iT邦新手 4 級 ‧ 2018-12-27 14:14:04 檢舉

感謝大大神速回覆,待會我來試試看!
另外請問,這種狀況只能用#temp暫存資料表?

不用呀~直接計算就可以了

lu760423 iT邦新手 4 級 ‧ 2018-12-27 14:23:12 檢舉

了解...看來我得在摸索一下,但您也替我解決了一個困境。

我要發表回答

立即登入回答