Kann ich bitte etwas Hilfe mit meinem SQL-Bericht Abfrage, ich bin 90% dort nur brauchen den letzten Schritt (noch lernen SQL so freundlich sein :)).SQL Single Row Abfrage Beratung
Wir haben derzeit zwei verschiedene Datenbanken:
- [DATABASE1] speichert alle unsere Vermögenswerte
- [database2] speichert alle Vermögenswerte, die wir noch
zahlen sich aus - - jede Zahlung gegen den Vermögenswert In dieser Datenbank zu die Bank, das Datum der Zahlung, der Betrag usw.
- - Die letzte Zeile für das Asset wird die letzte Zahlung sein, und das Datum wäre das erwartete Enddatum des Leasingvertrags.
Ich möchte einen Bericht, der eine einzige Zeile pro Asset zeigt alle Spalten hat.
Mein aktueller Bericht zeigt alle erforderlichen Informationen, aber es zeigt alle Zeilen pro Asset anstelle eines einzelnen eingekapselten Reihe, zum Beispiel:
ASSET NO | FINANCIER | AGEEMENT NUMBER | PAYMENT NUMBER | LEASE COMMENCE DATE | LEASE FINAL DATE | MONTHLY PAYMENTS
asset1 | bank 1 | 1111 | 1 | 01/01/2017 | NULL | NULL
asset1 | bank 1 | 1111 | 2 | NULL | NULL | 2000
asset1 | bank 1 | 1111 | 3 | NULL | NULL | NULL
..
asset1 | bank 1 | 1111 | 20 | NULL | 01/01/2020 | NULL
asset2 | bank 5 | 1536 | 1 | 05/08/2016 | NULL | NULL
..
Statt:
ASSET NO | FINANCIER | AGEEMENT NUMBER | PAYMENT NUMBER | LEASE COMMENCE DATE | LEASE FINAL DATE | MONTHLY PAYMENTS
asset1 | bank 1 | 1111 | 20 | 01/01/2017 | 01/01/2020 | 2000
asset2 | bank 5 | 1536 | 15 | 05/08/2016 | 12/05/2019 | 5500
..
Unten ist meine Frage:
Declare @MaxPays TABLE (
ITEMNO VARCHAR(MAX),
PAYNO VARCHAR(MAX)
)
INSERT INTO @MaxPays
SELECT
a.ITEMNO,
a.PAYNO
FROM
[DATABASE1] a
INNER JOIN
(SELECT ITEMNO, MAX(PAYNO) as PAYNO FROM [DATABASE1] GROUP BY ITEMNO) AS b ON
a.ITEMNO = b.ITEMNO AND a.PAYNO = b.PAYNO
SELECT
a.ITEMNO as 'Asset #',
a.FINANCE as 'Financier',
a.AGREENO as 'Agreement number',
a.PAYNO as 'Payment Number',
CASE WHEN a.PAYNO = 1 THEN a.PAYDATE ELSE NULL END as 'Lease Commencing Date',
CASE WHEN a.PAYNO = (SELECT PAYNO FROM @MaxPays WHERE ITEMNO = a.ITEMNO) THEN a.PAYDATE ELSE NULL END as 'Lease Finalising Date',
CASE WHEN a.PAYNO = 2 THEN a.PAYAMOUNT ELSE NULL END as 'Monthly Payments'
FROM
[DATABASE1] a
INNER JOIN
(SELECT DISTINCT ITEMNO from [DATABASE2]) AS b ON
a.ITEMNO = b.ITEMNO
ORDER BY a.ITEMNO
EDIT: die monatliche Zahlung von Links auf die zweite Instanz, weil irgendwann s Die erste Zahlung beinhaltet Anzahlungen und ist kein klarer Indikator für die wiederkehrenden monatlichen Zahlungen
Jede Hilfe wäre willkommen.
Dank
Zunächst sollten Sie die 'RDMS' statt nur' sql' markieren. Zurück zu Ihrer Frage müssen Sie 'GROUP BY' verwenden, jedoch kann ich die Antwort nicht liefern, da ich Ihre Logik nicht verstehe; Das Mietbeginn-Datum scheint 'min' zu sein, das Leasing-Finalisierungsdatum scheint' max', aber die monatlichen Zahlungen ... – Prisoner
Danke für die Kommentare, sorry, ich hätte klarstellen sollen. Die monatliche Zahlung bezieht sich auf die zweite Instanz, da manchmal die erste Zahlung Anzahlungen enthält und kein klarer Indikator für die wiederkehrenden monatlichen Zahlungen ist. Danke – Daniel
Vielleicht habe ich Sie verwirrt, 'RDMS' nicht das' RDMS'-Tag meine ich, aber etwas wie 'sql-server',' oracle', 'mysql'. Und meinst du, monatliche Zahlungen sollten der Wert des letzten Datensatzes sein, der dem Max (Lease-Abschlussdatum) entspricht? – Prisoner