iT邦幫忙

0

MSSQL從兩張表取值但要取更新日期最大的

  • 分享至 

  • xImage

declare @a table(
id int
,名稱 nvarchar(50)
)

declare @b table(
廁所id int
,清潔度 nvarchar(50)
,時間 datetime
)

declare @c table(
廁所id int
,檢查的清潔度 nvarchar(50)
,時間 datetime
)

insert into @a
values
('1','1樓廁所')
,('2','2樓廁所')

insert into @b
values
('1','80','2021/07/09 09:15:02.222')
,('1','75','2021/07/09 13:15:02.222')
,('1','95','2021/07/09 16:15:02.222')
('2','80','2021/07/09 09:15:02.222')
,('2','75','2021/07/09 13:15:02.222')
,('2','95','2021/07/09 16:15:02.222')

insert into @b
values
('1','50','2021/07/09 09:10:02.222')
,('1','75','2021/07/09 13:17:02.222')
,('1','70','2021/07/09 15:55:02.222')
('2','0','2021/07/09 09:15:02.222')
,('2','60','2021/07/09 13:15:02.222')
,('2','80','2021/07/09 16:55:02.222')

A是清單 B執行表 C檢查表

要做一個監控 隨時看現在 A廁所的乾淨程度
依照BC 哪一個的檢查時間為最後當成值
我應該用CASE的方式去判斷嗎還是用IF或者有更好的方法?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
純真的人
iT邦大師 1 級 ‧ 2021-07-09 17:09:13
最佳解答

是這樣??

declare @a table(
id int
,名稱 nvarchar(50)
)

declare @b table(
廁所id int
,清潔度 nvarchar(50)
,時間 datetime
)

declare @c table(
廁所id int
,檢查的清潔度 nvarchar(50)
,時間 datetime
)

insert into @a
values
('1','1樓廁所')
,('2','2樓廁所')

insert into @b
values
('1','80','2021/07/09 09:15:02.222')
,('1','75','2021/07/09 13:15:02.222')
,('1','95','2021/07/09 16:15:02.222')
,('2','80','2021/07/09 09:15:02.222')
,('2','75','2021/07/09 13:15:02.222')
,('2','95','2021/07/09 16:15:02.222')

insert into @c
values
('1','50','2021/07/09 09:10:02.222')
,('1','75','2021/07/09 13:17:02.222')
,('1','70','2021/07/09 15:55:02.222')
,('2','0','2021/07/09 09:15:02.222')
,('2','60','2021/07/09 13:15:02.222')
,('2','80','2021/07/09 16:55:02.222')

select 名稱
,清潔度
,時間
from (
	select row_number() over(partition by id order by 時間 desc) Sort
	,名稱
	,清潔度
	,時間
	from ((
		select *
		from @b
	)union(
		select *
		from @c
	)) k
	left join @a on id = 廁所id
) k
where Sort = 1

rogeryao iT邦超人 7 級 ‧ 2021-07-10 10:42:45 檢舉

應該...不是這樣

版主提到...B執行表 C檢查表
用 union 怪怪的...
版主沒提供希望產生的表格,所以還要多猜幾次吧。

說的也是~沒提供預期結果的表格@@|||

我要發表回答

立即登入回答