Bonkster's SQL Server 2005 Blog
SQL Server 2005 & Google Tips

Handige query

By Ronald Kraijesteijn

Oplossing voor het tonen voor bijv. alle klanten waar de afgelopen 2 jaar geen zaken mee is gedaan, uitgaande van een integer als datumveld.

SELECT * FROM AANKOPEN

WHERE LaatsteAankoop <= (YEAR(DATEADD(yy, -2, GETDATE())) * 10000) + (MONTH(DATEADD(yy, -2, GETDATE())) * 100) + (DAY(DATEADD(yy, -2, GETDATE())))

 

Delen door 0 kan niet in reporting services/sql server. Met deze eenvoudige formule kun je delen door 0 voorkomen zodat de #error melding niet meer verschijnt:

= IIF(SUM(Fields!OmzetVorigJaar.Value) + 0 = 0, Nothing,
SUM(Fields!MargeVorigJaar.Value) / IIF(SUM(Fields!OmzetVorigJaar.Value)+0=0,1,
( SUM(Fields!OmzetVorigJaar.Value) ) ))

Deze formule rekent het margepercentage uit van het vorige jaar (margevorigjaar/ omzetvorigjaar).

Eerst controleer je of het getal waardoor je wilt delen 0 is ( getal + 0 = 0). Als dit zo is vul je de textbox op met Nothing en stopt de verdere berekening. Nothing is hetzelfde als NULL in SQL, alleen met een ander naampje. Je kunt ook een lege string in de textbox stoppen: "". Mijn ervaring is dat je hiermee problemen kunt krijgen als je de uitkomst van deze cel in een andere cel wilt gebruiken (ReportItems). De input is dan een lege string en daar kun je geen formules mee maken.

Als het getal geen 0 is dan wordt de deling uitgevoerd.

 

SSRS Show All in parameter list

Posted In: , . By Ronald Kraijesteijn

Dataset voor het vullen van je parameter box

SELECT ['Toon Alles'] AS City

UNION

SELECT DISTINCT City FROM Customer

Dataset voor gebruik binnen je data-region in je rapport
SELECT * FROM Customer
WHERE (City = @GeselecteerdeCityID) OR (City = '[Toon Alles']