Wij hier op kantoor gebruik een rapportage tool genaamd Targit om bepaalde rapporten uit het systeem te halen. Alleen lopen we door wat aanpassingen in ons ERP pakket tegen wat problemen aan.
De MSSQL server haalt via een SSIS pakket gegevens op van een IBM AS/400, vervolgens kan Targit op basis van SQL views uit deze database gegevens halen en rapportages maken.
Nu ons probleem: Wij hebben een database met artikelen, waarin ook de artikel prijzen staan.
Alleen maken wij ook gebruik van meerdere magazijnen. (i.v.m. diepvries, vers, etc)
Voorbeeldje van een paar producten in de database.
Dan nu wat ik niet voor elkaar krijg:
Als de prijs (SCSU60) bij magazijn (STRC60) 01 op 0 staat dat hij dan de prijs uit Magazijn (STRC60) 20 haalt.
(Mag 1 is vers, mag 20 diepvries)
We gebruikten tot voor kort alleen magazijn 01 voor al onze prijzen, alleen door wat veranderingen van bovenaf is besloten om vers en diepvries qua prijzen op de diverse magazijnen te boeken. (Ja ik weet het, zoiets hoor je normaal in een betere tabel te zetten maar ja: meer dan 13k+ producten welke over deze 2 magazijnen verspreid zijn naar een andere tabel zetten is ook zeer tricky + moet op een AS/400 gebeuren)
De query waar ik de gegevens mee op haal:
Deze word nu nog min of meer gebruikt (zit compleet verweven in een SQL view welke deze tabel via een JOIN binnen haalt en alleen de prijs eruit haalt op basis van PNUM60 -> productID, CONO60 -> CompanyNumber, STRC60 -> Magazijn)
Wat zelf al gedaan:
e.e.a. al geprobeerd m.b.t. CASE, IF ELSE
Maar denk dat ik ergens een denkfout ofzo maak
Mijn simpele CASE was bijvoorbeeld:
De MSSQL server haalt via een SSIS pakket gegevens op van een IBM AS/400, vervolgens kan Targit op basis van SQL views uit deze database gegevens halen en rapportages maken.
Nu ons probleem: Wij hebben een database met artikelen, waarin ook de artikel prijzen staan.
Alleen maken wij ook gebruik van meerdere magazijnen. (i.v.m. diepvries, vers, etc)
| CONO60 | PNUM60 | STRC60 | SCSU60 |
| 21 | 20030 | 20 | 0 |
| 21 | 20030 | 01 | 2.25 |
| 21 | 58025 | 01 | 0 |
| 21 | 58025 | 20 | 4. |
| 21 | 20035 | 01 | 0 |
| 21 | 20035 | 20 | 2.25 |
Voorbeeldje van een paar producten in de database.
Dan nu wat ik niet voor elkaar krijg:
Als de prijs (SCSU60) bij magazijn (STRC60) 01 op 0 staat dat hij dan de prijs uit Magazijn (STRC60) 20 haalt.
(Mag 1 is vers, mag 20 diepvries)
We gebruikten tot voor kort alleen magazijn 01 voor al onze prijzen, alleen door wat veranderingen van bovenaf is besloten om vers en diepvries qua prijzen op de diverse magazijnen te boeken. (Ja ik weet het, zoiets hoor je normaal in een betere tabel te zetten maar ja: meer dan 13k+ producten welke over deze 2 magazijnen verspreid zijn naar een andere tabel zetten is ook zeer tricky + moet op een AS/400 gebeuren)
De query waar ik de gegevens mee op haal:
code:
1
2
3
| USE DATAWAREHOUSE; go SELECT CONO60, PNUM60, STRC60, SCSU60 FROM INP60 WHERE CONO60 = '21' AND STRC60 = '01'; |
Deze word nu nog min of meer gebruikt (zit compleet verweven in een SQL view welke deze tabel via een JOIN binnen haalt en alleen de prijs eruit haalt op basis van PNUM60 -> productID, CONO60 -> CompanyNumber, STRC60 -> Magazijn)
Wat zelf al gedaan:
e.e.a. al geprobeerd m.b.t. CASE, IF ELSE
Maar denk dat ik ergens een denkfout ofzo maak
Mijn simpele CASE was bijvoorbeeld:
code:
1
2
3
4
5
6
| SELECT CONO60, PNUM60, STRC60, SCSU60 FROM INP60 WHERE CASE SCSU60 WHEN '0' THEN STRC60 = '01' ELSE STRC60 = '20' end ORDER BY SCSU60; |
Richard