LesezeichenAbonnierenRSS-Feed abonnieren
Katrin1606
Fluorite | Level 6

Hallo zusammen,

 

ich habe eine Tabelle bei der in einer Spalte verschiedene Daten (Datum) stehen. Nun möchte ich mir in einer neuen Tabelle aber nur die Einträge für den Zeitraum 2. und 3. Woche ab dem 7.11.2018 anzeigen lassen.

 

Die Anzeige eines einzelnen Datums (z.B. 7.11.18 + 2 Wochen) ist kein Problem. Aber ich benötige wie gesagt alle Einträge für den Zeitraum 2.+3. Woche.

 

Leider war meine lange Suche im Netz vergeblich. Deshalb würde ich mich freuen Hilfe zu bekommen.

 

Viele Grüße

Katrin

3 ANTWORTEN 3
AndreasBachert
Calcite | Level 5

Wenn ich die Frage richtig verstehe, sollte eine einfache Selektion ausreichen:

PROC SQL;
   CREATE TABLE <Nur2Wochen> AS 
      SELECT *
      FROM   <AlleDaten>
      WHERE  <Datum> BETWEEN '07NOV2018'd + 14 AND '07NOV2018'd + 21
; QUIT;

Die Platzhalter zwischen den spitzen Klammern müssen durch die richtigen Werte für die Tabellen und Variablen ersetzt werden.

 

Viele Grüße

Andreas

Katrin1606
Fluorite | Level 6
Hallo Andreas,



vielen Dank. Geht die Selektion auch mit einen normalen data step ohne sql. Die INTNX funktion funktioniert hier nicht oder?



Viele Grüße

Katrin


---
Die Europäische Kommission hat unter http://ec.europa.eu/consumers/odr/ eine Europäische Online-Streitbeilegungsplattform (OS-Plattform) errichtet. Verbraucher können die OS-Plattform für die außergerichtliche Beilegung von Streitigkeiten aus Online-Verträgen mit in der EU niedergelassenen Unternehmen nutzen.

Informationen (einschließlich Pflichtangaben) zu einzelnen, innerhalb der EU tätigen Gesellschaften und Zweigniederlassungen des Konzerns Deutsche Bank finden Sie unter https://www.deutsche-bank.de/Pflichtangaben. Diese E-Mail enthält vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht gestattet.

The European Commission has established a European online dispute resolution platform (OS platform) under http://ec.europa.eu/consumers/odr/. Consumers may use the OS platform to resolve disputes arising from online contracts with providers established in the EU.

Please refer to https://www.db.com/disclosures for information (including mandatory corporate particulars) on selected Deutsche Bank branches and group companies registered or incorporated in the European Union. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
Kurt_Bremser
Super User

Das kommt darauf an, wie man den Wochenabstand definiert:

data have;
format datum e8601da10.;
do datum = '07nov2018'd to '05dec2018'd;
  output;
end;
run;

%let startdate=%sysfunc(inputn(2018-11-07,yymmdd10.));

data want1;
set have;
where &startdate + 7 <= datum < &startdate. + 21;
run;

data want2;
set have;
where intck('week',&startdate.,datum) in (1,2);
run;

data want3;
set have;
where intck('week',&startdate.,datum,'c') in (1,2);
run;

Variante 1 und Variante 3 liefern hier das gleiche Ergebnis.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Diskussionsstatistiken
  • 3 Antworten
  • 1013 Aufrufe
  • 3 Kudos
  • 3 in Unterhaltung