Any SELECT against a table needs to have a lock in order to protect against concurency problems. This is one of the bad habits that Oracle users often acquire, since Oracle's default behavior is to permit non-repeatable reads.
If you truly have a SELECT that requires no locks (doesn't include any tables or table-valued functions), then SQL Server won't take any locks. If you want SQL Server to behave like Oracle does, you can turn off locking at either the table or the session (spid) level.
This is dangerous behavior, and it is not recommended!