1
이 일부 데이터 확인하기 위해 선택을 쓰려고내가 relationships_split 라는 테이블이
create table relationships_split
(rel id int ,
rel_type_id varchar (20),
rel_type_group_id varchar(20),
rel_type_class_id varchar(20),
contact_id int,
isprimaryrelationship int,
dtadded datetime,
dtmodified datetime,
opposite_contact_id int)
insert into relationships_split
(rel_id,rel_type_id,rel_type_group_id,rel_type_class_id,contact_id,isprimaryrelationship,dtadded,dtmodified,opposite_contact_id)
VALUES
(29715, 2, 1, 2, 2138306, 0, '2012-10-26 11:08:55.230', '2012-10-26 11:08:55.230', 2138153),
(29715, 2, 1, 2, 2138306, 0, '2012-10-26 11:08:55.230', '2012-10-26 11:08:55.230', 2138153),
(29715, 2, 1, 2, 2138306, 0, '2012-10-26 11:08:55.230', '2012-10-26 11:08:55.230', 2138153),
(47574, 2, 1, 2, 1719969, 1, '2012-12-27 17:12:46.980', '2012-12-27 17:12:46.980', 1710276),
(47574, 2, 1, 2, 1719969, 1, '2012-12-27 17:12:46.980', '2012-12-27 17:12:46.980', 1710276),
(47574, 2, 1, 2, 1719969, 1, '2012-12-27 17:12:46.980', '2012-12-27 17:12:46.980', 1710276),
(47574, 2, 1, 2, 1719969, 1, '2012-12-27 17:12:46.980', '2012-12-27 17:12:46.980', 1710276)
create table contacts
(id int,
fullname varchar (900)
)
insert into contacts
(id,fullname)
values
(1719969,'Carrie Smith'),
(2138306,'Stephen Rosenthal')
(아마도 순위 방식)와 뷰 구조입니다 - 내가 primaryrelationship을 선택하면 = 1은이 내가 무엇을하고 나는 생각은 매우 잘못된 :
SQL 바이올린에 또한
with ids as (select id from contacts)
select
z.contact_id ,z.rel_id,
rank() over(partition by z.rel_id order by case when isprimarrelationship =1 then 1 else 0 end) as r
from
relationships_split z inner join ids
on z.contact_id = z.id
where r = 1