sql >> Database >  >> Database Tools >> SSMS

Hoe gegevens ophalen uit SQL Server op basis van onderstaand voorbeeld?

Misschien kun je een oplossing gebruiken zoals hieronderBekijk werkende demo

declare @d date='2018-Jun-03'

; with Indexer as 
(
    select 
        *, 
        rn= row_number() over(partition by CustName order by RecordedTime),
        rn2=row_number() over(partition by CustName order by RecordedTime desc)
    from records
)
,GetValidCustomerRecords as
(
    select 
        CustName,
        Country,
        RecordedTime,
        Audit   = case when cast(RecordedTime as date)[email protected] and rn=1 then 'add' else 'change' end,
        History = case 
                    when cast(RecordedTime as date)[email protected] and rn=1 
                    then 'new' 
                    when cast(RecordedTime as date)<@d and rn=1 
                    then 'before'
                    else 'current' end
    from Indexer i 
    where CustName in
    (
    select 
        distinct CustName 
    from records
    where cast(RecordedTime as date)[email protected]
    ) 
    and (rn=1 or rn2=1) and cast(RecordedTime as date)<[email protected]
)

select * from GetValidCustomerRecords
order by CustName, RecordedTime



  1. Een prefixnaam verwijderen uit elke tabelnaam in een mysql-database

  2. Slechte kardinaliteitsschattingen van SSMS-plannen - redux

  3. Waarom laat MySQL me het kenmerk niet verwijderen bij update CURRENT_TIMESTAMP?

  4. Gebruik van een ID in databases