Can we have single hash function both for data integrity and key derivation function? Can we have single hash function both for data integrity and key derivation function? Why and Why not?
Any link describing difference analytically will be appreciated.
Thanks.
I'll answer the question in the context of the most common application of KDFs - Password-Based Key Derivation Functions (ex PBKDF2) which take a relatively low-entropy string and derive a key from it. As opposed to Key-Based KDFs which take something that's already a strong key and change its length.

Hashes and PBKDFs are designed for different things. Yes, they are both hash functions with all the usual collision resistance, pre-image resistance, etc, but:


General-purpose hash functions want to be fast to have efficient implementations in software and hardware. This greatly reduces the runtime costs and latency of TLS servers, embedded devices doing TLS, hashing large files, etc.
PBKDFs want to be slow to make it as frustrating / expensive as possible to perform brute-force attacks on the password or master key.


SHA2 makes a terrible PBKDF because it's way too fast. PBKDF2 makes a terrible hash function because it's way too slow.



Many key derivation functions use regular hash functions internally.

For example, if you take a look at the PBKDF1/2 spec in RFC 2898, you'll notice:


  5.1 PBKDF1
  
  PBKDF1 applies a hash function, which shall be MD2 [6], MD5 [19] or
     SHA-1 [18], to derive keys.


and 


  5.2 PBKDF2
  
  PBKDF2 applies a pseudorandom function (see Appendix B.1 for an
     example) to derive keys.


And the example referenced in Appendix B.1 is to use HMAC-SHA-1 as the underlying pseudorandom function.



Related question on security.SE:

What's the advantage of using PBKDF2 vs SHA256 to generate an AES encryption key from a passphrase?