ich ein Problem mit einer Abfrage haben .... Ich habe eine diese Abfrage:SQL - Tag der Woche Ausgabe auf ausgewählten
declare @today int
set @today=DATEPART(dw,GETDATE())-2
select cast (cfv.value as VARCHAR), cfv.companyId
from CompanyFieldvalues cfv
join CompanyFields cf on cf.companyFieldId=cfv.companyFieldId
where cf.name='NextDeliveryDates' and cfv.companyId in(
select cfv.companyId
from CompanyFieldvalues cfv
join Companies c on c.companyId=cfv.companyId
where cfv.value='Retailer' and c.status=1)
/*and cfv.value like '%' + cast (@today as VARCHAR) + '%' */
Diese geben mir als eine Tabelle wie die zur Folge haben: Unique Account of a company, Delivery Days
CM001 | 2,4,1
CD04 | 3,3,4
CS7 | 2
CR001 | 4
FG076 | 3,3,5,4 JUH768 | 2,2,2
HG006 | 2
KG040 | 3,2,5
In ein paar Worten spare ich nur @today den Wert des tatsächlichen Wochentages (-2 weil das System, das diese DB verwendet, die Tage auf eine andere Weise verwalten) und dann Ich wähle einfach die Firmendaten und die Liefertage aus zwei verschiedenen Tabellen aus.
Mein Problem ist, dass ich nur das Unternehmen auswählen müssen, die als letzten Liefertag heute hat .... also wenn heute 2 Tage I Unternehmen mit letzten Liefertag 1,2 hat - 0,2 - 0,1 , 2 etc ...
wenn Sie in meinem Code sehen, dass es die letzte Zeile kommentiert, wenn Sie diese Zeile hinzufügen, die Sie mit diesem anderen Ergebnis:
CM001 | 2,4,1
CS7 | 2
JUH768 | 2,2,2
HG006 | 2
KG040 | 3,2,5
Aber auf diese Weise, wie man sehen kann, wähle ich verschiedene Unternehmen, die den aktuellen Tag nicht als letzten Liefertag haben.
So berechne ich eine dynamische Tabelle, die alle zukünftigen Datum enthalten:
declare @day int
set @day=DATEPART(dw,GETDATE())-1
declare @week int
set @week=7
declare @extra table
(extraday varchar)
while (@day<@week)
begin
insert into @extra (extraday) values (@day)
set @[email protected]+1
end
Dieses gib mir dieses Ergebnis: Days of the week future than the current one
Ich versuche, mach anders, mach mit, Unterschied, aber ich bekomme nicht nur die Firmen mit dem letzten Liefertag wie heute.
Wissen Sie, wie kann ich es beheben? oder wenn Sie eine andere Idee haben, wie ich es tun kann, lassen Sie es mich wissen.
Vielen Dank, Carlo
Carlo, nimm die letzte Zeile und entferne die letzte Wildcard, wie diese - 'und cfv.value wie '%' + cast (@today als VARCHAR)'. Damit stellen Sie sicher, dass Sie wie zuvor ein Zeichenfolgenmuster xxx2 statt xx2xx suchen. Sie könnten sogar genauer sein und so diesen '' und cfv.value wie '%', + Cast (@today als VARCHAR) 'fügen Sie ein Komma nach dem ersten Platzhalter hinzu. –
Hallo Steve, vielen Dank für die Tipps, es könnte helfen, aber mein Problem ist, dass die Nummer nicht jedes Mal in Reihenfolge ist, irgendwann kann man 1,4,2 finden. In diesem Fall ist der Tag 2 an der letzten Stelle in der DB, aber es ist nicht der letzte Liefertag ... noch mehr Tipps pls? : D –
Nun, Sie müssten definieren, wie Sie den letzten Liefertag in Ihrer Zeichenfolge bestimmen. Wenn Sie die Kontrolle darüber haben, zwingen Sie es an eine bestimmbare Position und suchen Sie immer danach. Wenn Sie mir ein bewegliches Ziel geben und mir keine Möglichkeit geben, vorherzusagen, wo es sein wird, können Sie nicht erwarten, dass ich es treffe. –