sql if else 写法,和 多个case when用法

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
/*
* create by huang qing
* modify by chaoxueling
* modify date 2013-05-15
*/
ALTER PROCEDURE [dbo].[sp_GetPropsTop_ByPropsCount]
 @PageIndex  int,
 @PageSize  int,
 @OrderType  int
AS
BEGIN

if(@OrderType=1)
begin
with Mem_TbUserPropsTop as
 (
  select A.*,b.PropsCountB,ROW_NUMBER() over (order by PropsCountA desc) as rowNumber from (
  select  QdUserId,PropsId,propscnt as PropsCountA from tbuserpropscnt where   propsid=153
   ) as A
  full  join(
  select  QdUserId,PropsId,propscnt as PropsCountB from tbuserpropscnt where  propsid=154
  ) as B
  on a.qduserid=b.qduserid
    )
 select qduserid,PropsId,ISNULL(PropsCountA,0) as PropsCountA,ISNULL(PropsCountB,0) as PropsCountB, rowNumber from Mem_TbUserPropsTop
 where rowNumber>@PageSize*(@PageIndex-1) and RowNumber<=@PageSize*@PageIndex
 order by   PropsCountA  desc 
end
else if(@OrderType=0)
begin
with Mem_TbUserPropsTop as
 (
  select A.*,b.PropsCountA,ROW_NUMBER() over (order by PropsCountB desc) as rowNumber from (
  select  QdUserId,PropsId,propscnt as PropsCountB from tbuserpropscnt where   propsid=154
   ) as A
  full  join(
  select  QdUserId,PropsId,propscnt as PropsCountA from tbuserpropscnt where  propsid=153
  ) as B
  on a.qduserid=b.qduserid
    )
 select qduserid,PropsId,ISNULL(PropsCountA,0) as PropsCountA,ISNULL(PropsCountB,0) as PropsCountB, rowNumber from Mem_TbUserPropsTop
 where rowNumber>@PageSize*(@PageIndex-1) and RowNumber<=@PageSize*@PageIndex
 order by   PropsCountB desc 
end
else
begin
with Mem_TbUserPropsTop as
 (
  select A.*,b.PropsCountA,ROW_NUMBER() over (order by PropsCountB desc) as rowNumber from (
  select  QdUserId,PropsId,propscnt as PropsCountB from tbuserpropscnt where   propsid=154
   ) as A
  full  join(
  select  QdUserId,PropsId,propscnt as PropsCountA from tbuserpropscnt where  propsid=153
  ) as B
  on a.qduserid=b.qduserid
    )
 select qduserid,PropsId,ISNULL(PropsCountA,0) as PropsCountA,ISNULL(PropsCountB,0) as PropsCountB, rowNumber from Mem_TbUserPropsTop
 where rowNumber>@PageSize*(@PageIndex-1) and RowNumber<=@PageSize*@PageIndex
 order by   PropsCountB desc 
end


END

 和

 order by   case when @OrderType=1  then PropsCountA when @OrderType=0 then PropsCountB when @OrderType=2  then PropsCountC else PropsCountD end  desc 

原文地址:https://www.cnblogs.com/cxlings/p/3077762.html