Ich versuche ein Datum von meiner dimdate
Tabelle zu den Daten in meiner Verkaufstabelle zu finden. Der Grund für die Verwendung der left join
ist so, dass wir alle Daten zwischen bis 2017-10-10
sehen und die SSRS
Matrix eine Spalte für jedes Datum anzeigt, auch wenn es keine Daten hat.Linke beitreten und passende Termine?
Dies ist ein Beispiel Abfrage:
declare @table table
(
fname varchar(20),
Sales int,
SaleDate date,
LastSale date
)
insert into @table
select 'John', 1, '2017/10/08', '2017/10/10'
union
select 'John', 3, '2017/10/09', '2017/10/10'
union
select 'John', 5, '2017/10/10', '2017/10/10'
union
select 'Mary', 1, '2017/10/06', '2017/10/08'
union
select 'Mary', 3, '2017/10/07', '2017/10/08'
union
select 'Mary', 5, '2017/10/08', '2017/10/08'
union
select 'Carl', 10, '2017/10/07', '2017/10/09'
union
select 'Carl', 13, '2017/10/08', '2017/10/09'
union
select 'Carl', 32, '2017/10/09', '2017/10/09'
select dim.fulldatealternatekey as 'fulldate', fname, sales, t.SaleDate
from dimdate dim left join @table t
on dim.fulldatealternatekey = t.SaleDate
where FullDateAlternateKey between '2017-10-05' and '2017-10-10'
and LastSale < '2017-10-10'
Das Problem ist, dass niemand '10 hat -05-2017' so fname
null ist, die Schrauben auf den Bericht, weil es eine zusätzliche Zeile zeigt.
Das andere Problem ist, dass ich will nicht, dass jemand, das sehen lastsale
ist 2017.10.10, aber sobald ich and LastSale < '2017-10-10'
Kommentar- es wird eine inner join
und ich sehe auch nicht 2017-10 -05 oder 2017-10-10.
Das sollte ideale Ausgangs sein:
fulldate fname sales SaleDate
2017-10-05 Carl NULL NULL
2017-10-06 Carl NULL NULL
2017-10-07 Carl 10 2017-10-07
2017-10-08 Carl 13 2017-10-08
2017-10-09 Carl 32 2017-10-09
2017-10-10 Carl NULL NULL
2017-10-05 Mary NULL NULL
2017-10-06 Mary 1 2017-10-06
2017-10-07 Mary 3 2017-10-07
2017-10-08 Mary 5 2017-10-08
2017-10-09 Mary NULL NULL
2017-10-10 Mary NULL NULL
Ich brauche nur das 1 fname
sollten alle fulldate
s 2017-10-05
-2017-10-10
enthalten, da dies so ist, dass SSRS alle Daten zeigt, so etwas wie dieses ist auch toll :
fulldate fname sales SaleDate
2017-10-05 Carl NULL NULL -- It can be Carl or Mary, doesn't matter
2017-10-07 Carl 10 2017-10-07
2017-10-08 Carl 13 2017-10-08
2017-10-09 Carl 32 2017-10-09
2017-10-06 Mary 12 2017-10-06
2017-10-07 Mary 32 2017-10-07
2017-10-08 Mary 52 2017-10-08
2017-10-10 Mary NULL NULL -- It can be Carl or Mary, doesn't matter
gehe ich davon aus mir eine temporären Tabelle aller Termine erstellen und diese Tabelle mit einer Zeile aktualisieren, und dann irgendwie eine Vereinigung verwenden und diese Zeile ausschließen, aber ich weiß, dass es eine andere Art und Weise sein.
Danke für die Hilfe.
Bitte geben Struktur und einfache Daten Ihres DimDate Tisch –