我有一个只有几列的表,该表包含具有相同值的多行(仅适用于几个字段)。我附上我的表格。
Id EmpName ProjectName ChargeDesc CostCenter Jan Feb Mar Apr May Jun Jul
32 2487 1386 124030 017N 0 0 0 0 0 3 0
33 2487 1386 124030 017N 0 0 0 0 0 3 3
就像上面的图片一样,这是我的要求。
我想获得前2行,其中条件如下(empname, projname, chargedesc, costcenter),并创建日期为desc。
这里我想比较这两行,找出列与值的差异。
所以在上面的例子中,所有字段都是相同的值,除了七月份的列。所以我想输出像Jul列,值为3。
这里我使用SQL Server 2019版本
您可以取消pivot和聚合:
select empname, projname, chargedesc, costcenter, mon,
min(val), max(val)
from t cross apply
(values ('Jan', jan), ('Feb', feb), . . .
) v(mon, val)
group by empname, projname, chargedesc, costcenter, mon
having min(val) <> max(val);