Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据列值设置值select语句t-sql。比如如果0集3,如果小于4集2等等_Sql_Sql Server_Database_Tsql - Fatal编程技术网

如何根据列值设置值select语句t-sql。比如如果0集3,如果小于4集2等等

如何根据列值设置值select语句t-sql。比如如果0集3,如果小于4集2等等,sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,我有一个名为photos的列,photos列的类型为tinyint,从0到8不等。我想在从表中选择数据时对列应用一个秩。想要获得的值是:如果记录有4张或更多照片,则它将收到1的排名。因为这是一个相当数量的照片,像5,6,7和8。如果记录的级别在1到3之间,则设置为2,中等级别,如果没有照片,则设置为3。有了它,我可以根据照片的数量对记录进行排序,并使我的申请保持一致。当然,您只需在订单中使用案例陈述即可。大概是这样的: SELECT * FROM Table ORDER BY CASE

我有一个名为photos的列,photos列的类型为tinyint,从0到8不等。我想在从表中选择数据时对列应用一个秩。想要获得的值是:如果记录有4张或更多照片,则它将收到1的排名。因为这是一个相当数量的照片,像5,6,7和8。如果记录的级别在1到3之间,则设置为2,中等级别,如果没有照片,则设置为3。有了它,我可以根据照片的数量对记录进行排序,并使我的申请保持一致。

当然,您只需在订单中使用案例陈述即可。大概是这样的:

SELECT *
FROM Table
ORDER BY
   CASE 
   WHEN photos >= 4 THEN 1
   WHEN photos >= 1 THEN 2
   ELSE 3 
   END
或者,如果希望它成为表中的实际列,可以将其添加为计算列:

ALTER TABLE mytable ADD rank AS 
CASE 
   WHEN photos >= 4 THEN 1
   WHEN photos >= 1 THEN 2
   ELSE 3 
END

当我看到When关键字时,不需要阅读其余的代码。我忘了这个语法。这是我想要的语法。