问题
I have a table with the fields CommonName
and FirstName
. Only either field has data, never both. Is there a way to order rows in an intersecting manner on SQL Server?
Example:
CommonName FirstName
Bern
Wade
Ashley
Boris
Ayana
I want records ordered like this:
CommonName FirstName
Ashley
Ayana
Bern
Boris
Wade
Is this possible, and if so, how?
回答1:
Use a CASE statement to select the value for that row and ORDER BY
that.
回答2:
ORDER BY
CASE
WHEN CommonName is null
THEN FirstName
ELSE CommonName
END
回答3:
ORDER BY CommonName + FirstName
, with appropriate ISNULL(<column>, '')
if they are nullable.
回答4:
order by coalesce(CommonName, FirstName)
来源:https://stackoverflow.com/questions/2907033/order-against-two-columns-at-the-same-time-intersecting