我正在寻找需要按 4 列排序的销售人员列表 - IsAvailable DESC、EmailStatus DESC、FirstName ASC、LastName ASC。
所需的单词排序列表:
我尝试过的代码:
SELECT
{Collaborator}.*,
{ShowroomMember}.*,
{WorkRole}.*,
(
SELECT
COUNT({ShowroomMember}.[Id])
FROM
{ShowroomMember}
WHERE
{ShowroomMember}.[CollaboratorId] = {Collaborator}.[Id]
)
FROM {ShowroomMember}
INNER JOIN {Collaborator} ON {Collaborator}.[Id] = {ShowroomMember}.[CollaboratorId]
INNER JOIN {WorkRole} ON {ShowroomMember}.[WorkRoleId] = {WorkRole}.Id
WHERE
**{ShowroomMember}.[ShowroomId] = @ShowroomId
ORDER BY {ShowroomMember}.[IsAvailable] DESC, {Collaborator}.[EmailStatus] DESC,
{Collaborator}.[FirstName] ASC, {Collaborator}.[LastName] ASC**
对使用图片的社区表示歉意。
对于任何寻找解决方案的人来说,我可以通过使用
CASE
来解决这个问题。这是一次漫长的反复试验,因为多次将名字和姓氏与 IsAvailable 和 EmailStatus 混合在一起,导致排序不符合解决方案。代码可能很难看,但它可以工作。您可以更新并使其看起来pretty
。
解决方案:
ORDER BY
CASE WHEN {Collaborator}.[EmailStatus]=1 AND {ShowroomMember}.[IsAvailable]=1 THEN {ShowroomMember}.[IsAvailable] END DESC,
CASE WHEN {Collaborator}.[EmailStatus]=1 AND {ShowroomMember}.[IsAvailable]=1 THEN {Collaborator}.[FirstName] END ASC,
CASE WHEN {Collaborator}.[EmailStatus]=1 AND {ShowroomMember}.[IsAvailable]=1 THEN {Collaborator}.[LastName] END ASC,
CASE WHEN {Collaborator}.[EmailStatus]=1 AND {ShowroomMember}.[IsAvailable]=0 THEN {ShowroomMember}.[IsAvailable] END ASC,
CASE WHEN {Collaborator}.[EmailStatus]=1 AND {ShowroomMember}.[IsAvailable]=0 THEN {Collaborator}.[FirstName] END ASC,
CASE WHEN {Collaborator}.[EmailStatus]=1 AND {ShowroomMember}.[IsAvailable]=0 THEN {Collaborator}.[LastName] END ASC,
CASE
WHEN {Collaborator}.[EmailStatus]=0 AND ({ShowroomMember}.[IsAvailable]=0 OR {ShowroomMember}.[IsAvailable]=1)
THEN {Collaborator}.[FirstName] END ASC