我正在研究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
答案 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)用于解决空问题。