请帮助我在Sql Server Reporting Services(Sql Server 2008 R2)中创建仪表板。如果建筑物房间在过去30天内已经过深度清洁,或者如果超过30天,则需要红色,以突出绿色。我们没有跟踪机制,我们在30天内多次清理同一房间,我们不希望如此。不确定如何编写Sql语句?
Table2
Bldg varchar(40),
BldgRoom varchar(40),
CleanDateTime DateTime ,
这是我经过数小时研究后得到的最接近的。
select distinct Bldg, BldgRoom, cleandatetime
FROM Table2
where Table2.Bldg = @Bldg
返回每个房间的多个红色和绿色。我想展示前面的独特房间。 516红色或绿色,517红色或绿色,518红色或绿色等,但我不断得到重复的红色/绿色每个房间。
答案 0 :(得分:0)
您需要选择最近最近干净日的建筑物和房间,而不是所有结果。
SELECT Bldg, BldgRoom, MAX(CleanDateTime)
FROM Table2
WHERE Table2.Bldg = @Bldg
GROUP BY Bldg, BldgRoom
答案 1 :(得分:0)
您应该可以按Bldg
进行分组,并比较每个组中的MAX(CleanDateTime)
:
SELECT
Bldg,
BldgRoom,
CASE WHEN DATEDIFF(day, MAX(CleanDateTime), GETDATE()) > 30
THEN 'Red'
ELSE 'Green'
END AS CleanStatus
FROM Table2
WHERE Bldg = @Bldg
GROUP BY Bldg, BldgRoom
您 也可以<{1}}获取MAX(CleanDateTime)
并在报告中进行日期比较。