Tsql 如何在WHERE中动态地使用CASE?使用日期时间选择

Tsql 如何在WHERE中动态地使用CASE?使用日期时间选择,tsql,case,where,Tsql,Case,Where,我有一个select,它需要有动态WHERE CASE条件 SELECT * FROM vwShowUctyPohyby WHERE (@id_parent is null or id_parent=@id_parent) and (datetime_creation <= @record_first_datetime) ORDER BY CASE @sort_order WHEN 0 THEN datetime_creat

我有一个select,它需要有动态WHERE CASE条件

SELECT 
      *
FROM 
      vwShowUctyPohyby
WHERE
      (@id_parent is null or id_parent=@id_parent)
      and (datetime_creation <= @record_first_datetime)
ORDER BY 
      CASE @sort_order WHEN 0 THEN datetime_creation END ASC, 
      CASE @sort_order WHEN 1 THEN datetime_creation END DESC  
选择
*
从…起
vwShowUctyPohyby
哪里
(@id\u parent为null或id\u parent=@id\u parent)

(datetime_creation这是你的意图吗

SELECT  * 
FROM  vwShowUctyPohyby 
WHERE 
      (@id_parent is null or id_parent=@id_parent) 
      and 
      ((datetime_creation <= @record_first_datetime and @sort_order = 0) or
      (datetime_creation >= @record_first_datetime and @sort_order = 1))
ORDER BY  
      CASE @sort_order WHEN 0 THEN datetime_creation END ASC,  
      CASE @sort_order WHEN 1 THEN datetime_creation END DESC   
选择*
来自vwShowUctyPohyby
哪里
(@id\u parent为null或id\u parent=@id\u parent)
及
((datetime\u creation=@record\u first\u datetime和@sort\u order=1))
订购人
CASE@sort\u顺序为0时,则datetime\u创建结束ASC,
CASE@sort\u order当1时,则datetime\u创建结束DESC

案例可用于列值(字段级),而不是语句的一部分。即使您不喜欢,您也必须创建两个语句。谢谢,您可以这样做,作为正确答案,我希望对其进行评分。谢谢您的帮助。