Gå til innhold

Slå sammen resultat fra flere tabeller


Anbefalte innlegg

SQLServer 2005:

Har flere tabeller der jeg ønsker å telle antall records og presentere disse gruppert på f.eks ukedag. Pr. tabell er dette enkelt nok:

SELECT     DatePart(dw, AWP1.Dato) AS Ukedag, Count(AWP1.Dato) AS [AWP1 Antall]
FROM         AWP1
WHERE     AWP1.Dato > DateAdd(d, - 7, GetDate())
GROUP BY DatePart(dw, AWP1.Dato)

 

Hvordan kan jeg joine andre tabeller med ukedag og Antall med denn for å få resultatsettet:

 

Ukedag, AWP1 Antall, AWP2 Antall

 

Alle tabellene har datofelt med unik index og verdien på datostempelene er ikke relatert mellom tabellene.

Lenke til kommentar
Videoannonse
Annonse

Det du ser etter er kombinasjonen av CTE og PIVOT:

 

use tempdb;
go

create table A (
 id int identity,
 dato datetime
);
go

create table B (
 id int identity,
 dato datetime
);
go

insert into A values (getdate());
insert into A values (getdate());
insert into A values (getdate()-1);
insert into A values (getdate()-2);

insert into B values (getdate());
insert into B values (getdate());
insert into B values (getdate()-1);
insert into B values (getdate()-1);
insert into B values (getdate()-2);
insert into B values (getdate()-2);
go

with CTE as (
 select 'A' as source, datepart(dw,dato) as dow, dato
 from A
 -- where clause
 union all
 select 'B' as source, datepart(dw,dato) as dow, dato
 from B
) select * from CTE pivot (count(dato) for source in ([A],[B])) as pvt
go

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...