如何在sql中基于时间合并记录

如何在sql中基于时间合并记录,sql,vb.net,Sql,Vb.net,对于我的调查软件,它包含许多MCQ,其中用户可以在调查中来回导航,并为同一问题选择2个或更多不同选项。所选的每个选项都存储在与问题ID关联的SQL数据库中。因此,为了分析和标记调查的给定选项,可能会出现为同一问题选择两个或多个选项的情况 我还在表中包含了一个Time-Time(7)字段。此字段存储选择该选项的时间。那么,我怎样才能继续做下去呢。 那么,我如何用上次选择的选项覆盖同一问题的所有答案呢?它是否可行?SQL命令是什么 表结构: Question_ID - int (FK) Surve

对于我的调查软件,它包含许多MCQ,其中用户可以在调查中来回导航,并为同一问题选择2个或更多不同选项。所选的每个选项都存储在与问题ID关联的SQL数据库中。因此,为了分析和标记调查的给定选项,可能会出现为同一问题选择两个或多个选项的情况

我还在表中包含了一个
Time-Time(7)
字段。此字段存储选择该选项的时间。那么,我怎样才能继续做下去呢。 那么,我如何用上次选择的选项覆盖同一问题的所有答案呢?它是否可行?SQL命令是什么

表结构:

Question_ID - int (FK) 
Survey_ID - int (FK) 
Time_chosen - time (7) 
Chosen_option - varchar(50) 
注:前端是VB 2012

那么我应该在前端还是后端包含这样的代码呢
谢谢

假设您使用的是SQL Server,我建议您创建一个仅包含所有最新答案的视图:

CREATE VIEW LatestAnswers
AS
SELECT
    Question_ID,
    Survey_ID,
    Time_Chosen,
    Chosen_Option
FROM
    (SELECT
        Question_ID,
        Survey_ID,
        Time_Chosen,
        Chosen_Option,
        ROW_NUMBER() OVER (PARTITION BY Question_ID, Survey_ID ORDER BY Time_Chosen DESC) AnswerOrder
    FROM
        AnswersTable) Answers
    WHERE
        AnswerOrder = 1

您需要提供一个表的模式示例,以便我们能够在提供帮助之前了解数据的存储方式。此外,您还应该提供一些您尝试过的示例代码,不管它是否有效。表结构:Question\u ID-int(FK)Survey\u ID-int(FK)Time\u selected-Time(7)selected\u option-varchar(50)谢谢!但是,我是否可以使用这个建议的解决方案,将相关数据插入到另一个表中?这里的重要部分是ROW_NUMBER()OVER()部分。这样做的目的是用1-n的数字对每个答案进行排序,其中n是答案的数量。按所选时间排序,这意味着每个问题的最新答案分配为1。您可以在针对该表的任何查询中使用同一列select,并使用它获取最新答案。结果放在哪里取决于你#