gpt4 book ai didi

sql - 交叉表 - 在同一列中存储不同的日期( session 1、 session 2、 session 3 等)

转载 作者:行者123 更新时间:2023-12-04 14:26:54 25 4
gpt4 key购买 nike

我需要跟踪不同的日期(动态)。因此,对于特定任务,您可以跟踪 X 个日期(例如 DDR1 session 日期、DDR2 session 日期、截止日期等)。

我的策略是创建一个表(DateTypeID、DateDescription)来存储每个日期的描述。然后我可以创建主表(ID、TaskDescription、DateTypeID)。因此,所有日期都将在一列中,您可以通过查看 TypeID 来判断该日期代表什么。问题是在网格中显示它。我知道我应该使用交叉表查询,但我无法让它工作。例如,我在 SQL Server 2000 中使用 Case 语句来翻转表,以便每个列名都是日期类型的名称。如果我们有以下表格:

日期类型表

日期类型 ID |日期说明

 1           | DDR1
2 | DDR2
3 | DueDate

任务表

身份证 |任务描述
1 | Create Design
2 | Submit Paperwork

Tasks_DateType 表

任务 ID |日期类型 ID |日期
1       |     1         | 09/09/2009
1 | 2 | 10/10/2009
2 | 1 | 11/11/2009
2 | 3 | 12/12/2009

结果应该是:

任务说明 | DDR1 | DDR2 |到期日
Create Design     |09/09/2009 | 10/10/2009 | null
Submit Paperwork |11/11/2009 | null | 12/12/2009

如果有人知道我如何研究这个,我很感激。我这样做而不是为每个日期制作一列的原因与让用户将来添加任意数量的日期有关,而无需手动将列添加到表格中并编辑 html 代码。这也允许使用简单的代码来比较日期或按类型显示即将到来的任务(例如“创 build 计的 DDR1 日期即将到来”)如果有人能指出我正确的方向,我很感激。

最佳答案

这是一个正确的答案,用您的数据进行了测试。我只使用了前两种日期类型,但无论如何您都可以即时构建它。

Select 
Tasks.TaskDescription,
Min(Case DateType.DateDescription When 'DDR1' Then Tasks_DateType.Date End) As DDR1,
Min(Case DateType.DateDescription When 'DDR2' Then Tasks_DateType.Date End) As DDR2
From
Tasks_DateType
INNER JOIN Tasks ON Tasks_DateType.TaskID = Tasks.TaskID
INNER JOIN DateType ON Tasks_DateType.DateTypeID = DateType.DateTypeID
Group By
Tasks.TaskDescription

编辑

van 提到没有日期的任务不会出现。这是对的。使用左连接(再次由 van 提到)并稍微重构查询将返回所有任务,即使这不是您目前的需要。
Select 
Tasks.TaskDescription,
Min(Case DateType.DateDescription When 'DDR1' Then Tasks_DateType.Date End) As DDR1,
Min(Case DateType.DateDescription When 'DDR2' Then Tasks_DateType.Date End) As DDR2
From
Tasks
LEFT OUTER JOIN Tasks_DateType ON Tasks_DateType.TaskID = Tasks.TaskID
LEFT OUTER JOIN DateType ON Tasks_DateType.DateTypeID = DateType.DateTypeID
Group By
Tasks.TaskDescription

关于sql - 交叉表 - 在同一列中存储不同的日期( session 1、 session 2、 session 3 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1434717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com