Vraag : Sql de Kwestie van serverqurey

Ik heb een Lijst


DEipUserID smallint NIET ONGELDIGE PK
DEipServiceID smallint Y PK
DEipServiceClientID smallint Y
UseDateID int. Y
UseTimeID int. Y
SubscriptionProfileID smallint N
IsLatest Tinyint Y
UseCount tinyint Y
DeipDataSourceID int. N
DEipTrackingID bigint N
EipInsertDtTm bigint N
EipUpdateDtTm bigint N

How ik onder logica. bereik.

For de eerste rij meest islatest =1, 2de rij aankomt gaat naar de verandering IsLtatest van het prevverslag = 0 en zette IsLatest = 1 voor nieuwe record.

Thanks vooraf

Antwoord : Sql de Kwestie van serverqurey

>> de primaire sleutel is (DEipUserID+DEipServiceID)
O.k., is de vraag dan onjuist.  Omdat per definitie, wanneer u op de primaire sleutel verdeelt, elke enige men is uniek en rijaantal van 1 zal terugkeren.

Terugkerend naar de vraag,
[Voor de eerste rij aan meest islatest komt =1, 2de rij gaat naar de verandering IsLtatest van het prevverslag = 0 en zette IsLatest = 1 voor nieuw verslag.]
En één vraag die u hierboven hebt gehad, ik verdenk u eigenlijk wilt, wat bent de definitie van „2de rij“, bent het „tweede en daarna rijen per DEipUserID+DEipServiceClientID“?  Wat er ook het is, verdeling door die combinatie.


; met tmp zoals (
selecteer deipuserid, deipserviceid, het meest islatest, rn=row_number () over (verdeling door deipuserid, deipserviceClientid orde door eipinsertdttm desc) van dbo.FactUserClientUse)
werk tmp plaatsen anders islatest=case wanneer rn=1 toen 1 eind 0 bij
Andere oplossingen  
 
programming4us programming4us