Create a command object. Look at the dataexpert and above the database where your stored proc is, there should be a line like 'Add Command'. You can type your SQL for distinct cities here and they can be displayed as a parameter in the report. You can select multiple of them, and then in the Reports/selection formulas/records, you can check if the city returned by the stored proc is in the ARRAY of cities the user selected, if yes, display the record, else suppress it from the record set that Crystal is going to report on. I don't use this method (filtering the data) but I believe you use the IN keyword to check.
HTH