首页 > 解决方案 > 如何正确设置查询以在 SQL 中获取特定结果

问题描述

我需要从下面显示的表格中做 2 份报告。

  1. 我需要一份报告来查看执行报告时仍在上学的所有孩子

  2. 我需要一份报告来告诉我每个孩子在学校度过的小时数。对于仍在上学的孩子,当他们进入学校和当前时间时。

你能帮我为这两种情况正确设置逻辑吗?

详细解释:

提前致谢 :)

IF OBJECT_ID('tempdb..#temp') IS NOT NULL 
    DROP TABLE #temp
GO

CREATE TABLE #temp 
(
    Person nvarchar(max), 
    src_location nvarchar(max),  
    dst_location nvarchar(max), 
    [time] datetime 
)
GO

INSERT INTO #temp (person, src_location, dst_location, time) 
VALUES ('John', 'House', 'School', '2018-08-31 08:53:55'),
       ('Peter', 'House', 'School', '2018-08-31 09:01:55'),
       ('John', 'School', 'Library', '2018-08-31 09:03:14'),
       ('Tina', 'Park', 'School', '2018-08-31 09:10:22'),
       ('John', 'Library', 'School', '2018-08-31 09:50:14'),
       ('John', 'School', 'House', '2018-08-31 00:48:14'),
       ('Tina', 'School', 'House', '2018-08-31 00:15:22'),
       ('John', 'House', 'School', '2018-10-16 08:22:32')

SELECT * FROM #temp

标签: sqlsql-server-2016

解决方案


我不是那么精通MSSQL。解决您的第一个问题的一般方法是查询每个用户的最新条目(GROUP BY [person]),然后过滤它们以查找 dst_location 等于 School([dst_location] = 'School')的人

我看到这并不完全有效,因为它仍然返回蒂娜,而她已经离开学校,请参阅http://sqlfiddle.com/#!18/0b1c8/24


推荐阅读