je la sortie suivante:groupe SQL par et la fonction Lag ne pas donner une sortie correcte
last_login | id | type | w_id
11/9/2016 10:59:13 PM | 123 | Thing1 | W1
11/9/2016 10:59:15 PM | 123 | Thing1 | W1
11/9/2016 10:59:15 PM | 123 | Thing1 | W3
11/10/2016 10:59:13 PM | 123 | Thing2 | W2
11/11/2016 10:59:13 PM | 123 | Thing1 | W1
11/12/2016 10:59:13 PM | 123 | Thing1 | W1
11/12/2016 10:59:13 PM | 345 | Thing1 | W4
11/13/2016 10:59:13 PM | 345 | Thing1 | W1
11/14/2016 10:59:13 PM | 345 | Thing2 | W2
11/15/2016 10:59:13 PM | 345 | Thing2 | W5
11/16/2016 10:59:13 PM | 345 | Thing1 | W1
11/16/2016 10:59:13 PM | 345 | Thing1 | W1
11/17/2016 10:59:13 PM | 345 | Thing1 | W4
11/17/2016 10:59:13 PM | 345 | Thing1 | W4
pour la requête ci-dessous:
select sa.last_login, ad.ID, sa.type, w_id,
from table1 dcc
join table2 AD
on AD.ID=DCC.id
JOIN table3 sa
ON AD.ID=sa.id
join table4 sc
on dcc.id=sc.id
where sic3=‘Something’
order by dcc.id, sa.last_login
Je veux une sortie de quelque chose comme ceci:
last_login | id | old_type | type | old_w_id | w_id
11/11/2016 10:59:13 PM | 123 | Thing2 | Thing1 | W2 | W1
11/17/2016 10:59:13 PM | 345 | Thing1 | Thing1 | W1 | W4
Je suis en train de le faire de la manière suivante:
select
t.last_login, t.id, t.old_type, t.type , t.old_w_id, t.w_id
from
(select sa.last_login, ad.id, sa.type,
lag(sa.type, 1) over (partition by ad.id order by sa.last_login) as old_type, w_id,
lag(w_id, 1) over (partition by ad.ID order by sa.last_login) as old_w_id from table1 dcc
join table2 AD
on ad.id=DCC.id
JOIN table3 sa
ON AD.ID=sa.id
join table4 sc
on dcc.id=sc.id
where sc.si=’Something’
order by dcc.id, sa.last_login) t
where t.old_type like ’THING1’ and t.type like ‘THING2’
group by t.id, t.id, t.old_type, t.type, t.w_id, t.old_w_id
Mais je reçois une sortie de quelque chose comme ceci:
last_login | id | old_type | type | old_w_id | w_id
11/11/2016 10:59:13 PM | 123 | Thing1 | Thing2 | W1 | W2
Comment puis-je obtenir la sortie désirée et pourquoi ma requête (fonction de décalage) ne fonctionne pas correctement?
Qu'est-ce que le groupe 'by' a à voir avec cette requête? –
C'est une énorme table avec plusieurs entrées par identifiant. – akrama81
@GordonLinoff Edité la sortie de la table et la sortie requise dans ma question pour obtenir une meilleure idée – akrama81