Jeg prøver at køre nedenstående query, og får en fejl når en dato er angivet om '00.00.0000', hvilket er logisk nok da den er uden for daterange. Men hvordan skriver jeg mig ud af det i nedenstående kode?
UPDATE tblXSAP_AnnuityMasterData_Sandbox SET tblXSAP_AnnuityMasterData_Sandbox.Contract = (SELECT TOP 1 RIGHT(ContractNr, 8) FROM [BASS].[dbo].[tblXSAP_Contracts] WHERE CONVERT(date, '01' + '.' + Right(tblXSAP_AnnuityMasterData_Sandbox.FiscPeriod, 2) + '.' + Right(tblXSAP_AnnuityMasterData_Sandbox.FiscYear, 4), 104) BETWEEN CONVERT(date, '01' + '.' + RIGHT(tblXSAP_Contracts.ValidFrom, LEN(tblXSAP_Contracts.ValidFrom) - 3), 104) AND CONVERT(date, '01' + '.' + RIGHT(tblXSAP_Contracts.ValidTo, LEN(tblXSAP_Contracts.ValidTo) - 3), 104) AND tblXSAP_AnnuityMasterData_Sandbox.SerialNumber = tblXSAP_Contracts.SerialNumber ORDER BY CONVERT(date, tblXSAP_Contracts.ValidFrom, 104) DESC) FROM tblXSAP_AnnuityMasterData_Sandbox
Da ingen af felterne synes at være gemt som datofelter (hvilket er lidt crazy, IMHO -- især at gemme dem i dansk format, som ikke umiddelbart kan sorteres), kan du vel bare behandle dem som strenge:
UPDATE tblXSAP_AnnuityMasterData_Sandbox SET tblXSAP_AnnuityMasterData_Sandbox.Contract = (SELECT TOP 1 RIGHT(ContractNr, 8) FROM [BASS].[dbo].[tblXSAP_Contracts] WHERE Right(tblXSAP_AnnuityMasterData_Sandbox.FiscYear, 4)+Right(tblXSAP_AnnuityMasterData_Sandbox.FiscPeriod, 2) BETWEEN RIGHT(tblXSAP_Contracts.ValidTo,4)+SUBSTRING(tblXSAP_Contracts.ValidTo,4,2) AND RIGHT(tblXSAP_Contracts.ValidTo,4)+SUBSTRING(tblXSAP_Contracts.ValidTO,4,2) AND tblXSAP_AnnuityMasterData_Sandbox.SerialNumber = tblXSAP_Contracts.SerialNumber ORDER BY RIGHT(tblXSAP_Contracts.ValidFrom,4)+SUBTRING(tblXSAP_Contracts.ValidFrom,4,2)+LEFT(tblXSAP_Contracts.ValidFrom,2) DESC) FROM tblXSAP_AnnuityMasterData_Sandbox
(eller noget lign.)
Bemærk, at jeg har smidt '01' væk, i join kriteriet, da det ikke reelt bruges der.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.