Hallo zusammen,
ich bin dabei Prozesse, die noch in Access ablaufen auf den SQL Server zu migrieren.
Dabei habe ich schon eine Menge angepasst, bei einigen Abfragen jedoch vertstehe ich nicht, warum die Ergebnisse so unterschiedlich sind.
Kann mir jemand einen Tipps geben?
Ich habe die Abfragen hier mal abgebildet:
Original aus Access:
Version für SQL Server:
Erste Ergebnis: 280 DS
Zweites Ergebnis: 116.522 DS
Die Ausgangsdateien sind gleich...
Was läuft den da falsch?
Grüße, Babsi
ich bin dabei Prozesse, die noch in Access ablaufen auf den SQL Server zu migrieren.
Dabei habe ich schon eine Menge angepasst, bei einigen Abfragen jedoch vertstehe ich nicht, warum die Ergebnisse so unterschiedlich sind.
Kann mir jemand einen Tipps geben?
Ich habe die Abfragen hier mal abgebildet:
Original aus Access:
SELECT DISTINCTROW 0 AS OK, "ec" AS [Short], "ec-Provision"
AS Descr,
"" AS WhyNot,
11 AS Kostenstelle,
CLng([PROVISION].[RESELLER_ID]) AS RID,
CLng([BILLPOS].[TERMINAL_ID]) AS TID, Month([BILL_DATE]) AS BMoth,
Year([BILL_DATE]) AS BYear,
0.0001 AS [RLV-Wert], BILL.BILL_DATE,
Max(BILLPOS.BPOS_UNTIL) AS Buntil,
[zzHilfstabelle->Prov LastProv].Last, Sum(BILLPOS.ProvWert) AS PWert,
Sum(BILLPOS.ProvAnz) AS PAnz, Sum(BILLPOS.BPOS_VOLUME) AS BVol,
PROVISION.PROVISION_EC, 0.0001 AS Wert,
BILL.CURRENCY_ID,
BILLPOS.BILL_ID,
"ec" AS What,
Max(BILLPOS.BTCOST_ID) AS BTCID,
[zzHilfstabelle->Prov LastProv].bis,
PROVISION.PROVISION_StartWhen,
PROVISION.PROVISION_EndWhen
FROM (((BILLPOS INNER JOIN BILL ON BILLPOS.BILL_ID = BILL.BILL_ID)
INNER JOIN PROVISION ON BILLPOS.TERMINAL_ID = PROVISION.TERMINAL_ID)
INNER JOIN RESELLER ON PROVISION.RESELLER_ID = RESELLER.RESELLER_ID)
INNER JOIN [zzHilfstabelle->Prov LastProv] ON RESELLER.RESELLER_ID = [zzHilfstabelle->Prov LastProv].RESELLER_ID
WHERE (((BILL.BILL_DATE)>[Last]
And (BILL.BILL_DATE)<=[bis]
And (BILL.BILL_DATE)>=IIf(IsNull([PROVISION_StartWhen]),[BILL_DATE],[PROVISION_StartWhen]) And (BILL.BILL_DATE)>#31/12/2007#)
AND ((PROVISION.PROVISION_EC)>0)
AND ((BILLPOS.BTCOST_ID)=1 Or (BILLPOS.BTCOST_ID)=50 Or (BILLPOS.BTCOST_ID)=51 Or (BILLPOS.BTCOST_ID)=52))
GROUP BY 0, "ec-Provision", "", 11, CLng([PROVISION].[RESELLER_ID]), CLng([BILLPOS].[TERMINAL_ID]), Month([BILL_DATE]), Year([BILL_DATE]), BILL.BILL_DATE, [zzHilfstabelle->Prov LastProv].Last, PROVISION.PROVISION_EC, 0.0001, BILL.CURRENCY_ID, BILLPOS.BILL_ID, "ec", [zzHilfstabelle->Prov LastProv].bis, PROVISION.PROVISION_StartWhen, PROVISION.PROVISION_EndWhen, 0.0001, "ec"
HAVING (((PROVISION.PROVISION_StartWhen)>=[Forms].[wPU -> Provisionen erstellen]![VonDatum] Or (PROVISION.PROVISION_StartWhen) Is Null) AND ((PROVISION.PROVISION_EndWhen)>[Forms].[wPU -> Provisionen erstellen]![BisDatum] Or (PROVISION.PROVISION_EndWhen) Is Null))
ORDER BY CLng([PROVISION].[RESELLER_ID]), CLng([BILLPOS].[TERMINAL_ID]), BILL.BILL_DATE;
Version für SQL Server:
SELECT DISTINCT 0 AS OK, 'ec' AS [Short], 'ec-Provision'AS Descr,
'' AS WhyNot,
11 AS Kostenstelle,
[PROVISION].[RESELLER_ID] AS RID, [BILLPOS].[TERMINAL_ID] AS TID,
Month([BILL_DATE]) AS BMoth,
Year([BILL_DATE]) AS BYear,
0.0001 AS [RLV-Wert],
BILL.BILL_DATE,
Max(BILLPOS.BPOS_UNTIL) AS Buntil, [Last] ,
Sum(BILLPOS.ProvWert) AS PWert,
Sum(BILLPOS.ProvAnz) AS PAnz, Sum(BILLPOS.BPOS_VOLUME) AS BVol, PROVISION.PROVISION_EC, 0.0001 AS Wert,
BILL.CURRENCY_ID, BILLPOS.BILL_ID,
'ec' AS What,
Max(BILLPOS.BTCOST_ID) AS BTCID,
[bis],
PROVISION.PROVISION_StartWhen,
PROVISION.PROVISION_EndWhen
FROM (((data.BILLPOS
INNER JOIN data.BILL ON BILLPOS.BILL_ID = BILL.BILL_ID)
INNER JOIN data.PROVISION ON BILLPOS.TERMINAL_ID = PROVISION.TERMINAL_ID)
INNER JOIN data.RESELLER ON PROVISION.RESELLER_ID = RESELLER.RESELLER_ID)
INNER JOIN dbo.[zzHilfstabelle->Prov LastProv] ON RESELLER.RESELLER_ID = [zzHilfstabelle->Prov LastProv].[RESELLER_ID]
WHERE BILL.BILL_DATE>[Last]
And (BILL.BILL_DATE)<=[bis]
And BILL.BILL_DATE >=IIf([PROVISION_StartWhen] is null,[BILL_DATE],[PROVISION_StartWhen])
And BILL_DATE>'2007.10.31' AND PROVISION.PROVISION_EC >0
AND (BILLPOS.BTCOST_ID)=1 Or (BILLPOS.BTCOST_ID)=50 Or (BILLPOS.BTCOST_ID)=51 Or (BILLPOS.BTCOST_ID)=52
GROUP BY [PROVISION].[RESELLER_ID], [BILLPOS].[TERMINAL_ID], Month([BILL_DATE]),BILL.BILL_DATE,
[Last], PROVISION.PROVISION_EC, BILL.CURRENCY_ID, BILLPOS.BILL_ID, [bis], PROVISION.PROVISION_StartWhen, PROVISION.PROVISION_EndWhen
HAVING (((PROVISION.PROVISION_StartWhen)>='2023.07.01' Or (PROVISION.PROVISION_StartWhen) Is Null)
AND ((PROVISION.PROVISION_EndWhen)>'2023.10.31'Or (PROVISION.PROVISION_EndWhen) Is Null))
ORDER BY [PROVISION].[RESELLER_ID], [BILLPOS].[TERMINAL_ID], BILL.BILL_DATE;
Erste Ergebnis: 280 DS
Zweites Ergebnis: 116.522 DS
Die Ausgangsdateien sind gleich...
Was läuft den da falsch?
Grüße, Babsi