Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
条件SQL Select语句_Sql_Sql Server - Fatal编程技术网

条件SQL Select语句

条件SQL Select语句,sql,sql-server,Sql,Sql Server,我在下面有一张桌子 Name Product --------------------- Value 2002 HigherLimit * HigherLimit 2002 LowerLimit * 我需要一个select语句返回具有以下条件的distinct(名称) 如果产品为2002,则返回“2002”,否则返回“*” 以下是预期结果 Name Product --------------------- Value

我在下面有一张桌子

Name          Product
---------------------
Value          2002
HigherLimit    *
HigherLimit    2002
LowerLimit     *
我需要一个select语句返回具有以下条件的distinct(名称)

如果产品为2002,则返回“2002”,否则返回“*”

以下是预期结果

Name          Product
---------------------
Value          2002
HigherLimit    2002
LowerLimit     *
任何帮助都将不胜感激

谢谢
Niju

由于
2002
的计算结果将大于
*
,因此您可以简单地使用
MAX()
聚合,按
名称进行分组:

SELECT
  Name,
  MAX(Product) AS Product
FROM yourtable
/* WHERE Product IN ('2002', '*') -- if necessary */
GROUP BY Name
ORDER BY Product DESC

但是,如果实际表中的值不仅仅是
2002
*
,并且要返回2002值而不是最大值,请使用
大小写来分隔所需的值(2002),并将所有其他值作为
*
返回。
MAX()

SELECT
  Name,
  /* Force *all* values not 2002 to be `*` */
  MAX(CASE WHEN Product = '2002' THEN Product ELSE '*' END) AS Product
FROM yourtable
GROUP BY Name
ORDER BY Product DESC

是否有不同的名称和产品,如果没有,是否有任何名称有产品用途2002,如果没有用途*?您的数据库服务器是什么?您使用的是什么rdbms?MySQL?SQLServer?神谕等等…每个名称仅插入不同的名称、不同的产品。这是SQL 2008 R2