Development questions

How do you query Polymorphic lookup fields like What and Who on Task/Event or Owner using TYPEOF in SOQL?

TYPEOF lets you select different fields depending on the actual object type of a polymorphic relationship (What, Who on Task/Event, Owner, etc.).

soql
SELECT Id, Subject,
  TYPEOF Who
    WHEN Lead    THEN Company, Email
    WHEN Contact THEN Account.Name, Department
    ELSE Name
  END
FROM Task

You can also filter polymorphic fields with Who.Type = 'Lead'.

soqlpolymorphictypeof