INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1234\',\'ZHANGTAO\',\'A\',\'20100506\');
INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1234\',\'ZHANGTAO\',\'A\',\'20100507\');
INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1234\',\'ZHANGTAO\',\'B\',\'20100508\');
INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1234\',\'ZHANGTAO\',\'A\',\'20100509\');
INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1235\',\'ZZZZ\',\'A\',\'20100506\');
INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1235\',\'ZZZZ\',\'B\',\'20100507\');
INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1235\',\'ZZZZ\',\'A\',\'20100508\');
INSERT INTO LDY_TEMP_2
(证件号码,姓名,旅馆名称,入住时间)
VALUES(\'1235\',\'ZZZZ\',\'B\',\'20100509\');
建表语句和測试数据已经给出 请问 怎样查找相邻两次入住旅馆名称不同的人;也就是说 一个人的证件号码是123的话 那么这个人的信息依照入住时间排序后 相邻两条数据的旅馆名称不能一样 。
解答:
with temp_a as
(select
t.证件号码,
t.旅馆名称,
t.入住时间,
lag(t.旅馆名称) over (partition by t.证件号码 order by t.入住时间) as lagname
from ldy_temp_2 t)
select 证件号码,姓名,旅馆名称,入住时间
from ldy_temp_2 a
where a.证件号码 not in (select b.证件号码 from temp_a b where b.旅馆名称=b.lagname)