如何对非布尔结果使用CASE



问题如何在SQL Server中创建这个

IF ADJ_DAYS_OFF_FLAG= '1' and   ADJ_CONSECUTIVE_DAYS ='1'
THEN [value] of ADJ_DAYS_OFF 
ELSE [value] of ELIG_DAYS_OFF

我:

<表类>参与者价值名称期tbody><<tr>詹姆斯0ADJ_DAYS_OFF_FLAG2022-12-1詹姆斯0ADJ_CONSECUTIVE_DAYS2022-12-1詹姆斯0ADJ_DAYS_OFF2022-12-1詹姆斯8ELIG_DAYS_OFF2022-12-1

简单的条件聚合似乎就足够了

SELECT
t.PARTICIPANT,
t.PERIOD,
CONCAT(
(23 - CASE WHEN
SUM(CASE WHEN t.NAME = 'ADJ_DAYS_OFF_FLAG'    THEN t.VALUE END) *
SUM(CASE WHEN t.NAME = 'ADJ_CONSECUTIVE_DAYS' THEN t.VALUE END)
> 0 THEN
SUM(CASE WHEN t.NAME = 'ADJ_DAYS_OFF'         THEN t.VALUE END)
ELSE
SUM(CASE WHEN t.NAME = 'ELIG_DAYS_OFF'        THEN t.VALUE END)
END
) * 100 / 23
,'%')
FROM YourTable t
GROUP BY
t.PARTICIPANT,
t.PERIOD;

,db&lt的在小提琴

SQL Server有IIF关键字。(Inline IF的缩写)

这是一个指南。

下面是一个例子:

SELECT Username,
IIF(Role = 'Manager' OR Role = 'Lead', 1, 0) AS IsSupervisor
FROM Users

相关内容

  • 没有找到相关文章

最新更新