Coalesce SQL函数的参数限制?

时间:2017-10-20 17:31:39

标签: sql-server tsql

我正在研究ID类型的逻辑,其中大约有20个,我在查询中的where子句下执行此IDType = COALESCE(1,2,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19))

1)对于类型为1和12的记录。当满足1时,忽略12,我只看到一个结果(显然是前两个)。

2)记录的类型ID为6,8,11。我希望它能够选择6并按照Coalesce中指定的顺序选择8和11种类型,但这不起作用。有趣的是,我没有找到任何该记录的结果。

Coalesce函数中的参数数量是否有限制,因为第一种情况是它拾取1并忽略12而在第二种情况下它没有拾取任何ID类型。请帮助#NewToSQL

2 个答案:

答案 0 :(得分:2)

如果您需要选择"首先"您可以使用窗口函数之一进行IDType,例如ROW_NUMBER

SELECT * FROM 
(
SELECT t.* , ROW_NUMBER() OVER (ORDER BY IDType ) rn 
FROM table1 t 
WHERE IDType IN (1,2,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19)
) a 
WHERE rn =1;

更新以添加partition by employee_id(假设表格有employee_id字段)

 SELECT * FROM 
(
SELECT t.* , ROW_NUMBER() OVER (PARTITION BY t.employee_id ORDER BY IDType ) rn 
FROM table1 t 
WHERE IDType IN (1,2,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19)
) a 
WHERE rn =1;

答案 1 :(得分:1)

在SQL Server中,COALESCE对参数的数量没有明确的限制。

您阅读问题听起来像是一个逻辑问题,您必须使用Case (Transact-SQL)解决问题。

COALESCE (Transact-SQL)用于解决空问题。