组合命名记录列表并跟踪 SQL 中的日期字段
Posted
技术标签:
【中文标题】组合命名记录列表并跟踪 SQL 中的日期字段【英文标题】:Combining a list of named records and keeping track of a date field in SQL 【发布时间】:2016-10-05 08:06:26 【问题描述】:我在 MS Access 中有一个记录列表,例如
PrimaryKey、RecordName、日期 1,记录 1,1 月 16 日 2,记录 1,2 月 16 日 3,记录 1,3 月 16 日 4,记录 1,12 月 16 日 5,记录 2,2 月 16 日 6,记录 2,12 月 16 日我试图弄清楚如何使用 SQL 操作它们,以便它们以下列方式出现
记录名称的唯一列表,1 月 16 日,2 月 16 日,3 月 16 日,4 月 16 日,5 月 16 日,6 月 16 日,7 月 16 日,8 月 16 日,9 月 16 日,10 月 16 日, 11 月 16 日,12 月 16 日 记录 1、1、1、1、0、0、0、0、0、0、0、0、1 记录2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1我希望合并唯一记录,并且该记录的日期应在哪里注明 1。
步骤/思考过程
我知道 SQL 应该查找最大和最小日期以确定应该添加多少个月的字段。
默认情况下,新表中的所有字段都应设置为零。
下一步应该是遍历原始表中的每条记录,当它找到一个日期时,它应该在新表的相关字段中放置一个 1。
新表应该只有一个唯一的记录名称列表
我知道如何在 excel 中执行此操作,但在这一点上,我什至不确定在 SQL 中是否可行。
【问题讨论】:
【参考方案1】:只需使用日期字段创建交叉表查询作为列列,并按所需日期填写查询的“列标题”属性。像这样的:
TRANSFORM IIf(Count([ID]) Is Null,0,Count([ID])) AS [Count]
SELECT Table1.RecordName
FROM Table1
GROUP BY Table1.RecordName
PIVOT Format([RecordDate],"mmm-yy") In ("Jan-16","Feb-16","Mar-16","Apr-16","May-16","Jun-16","Jul-16","Aug-16","Sep-16","Oct-16","Nov-16","Dec-16");
这里我假设 Date 字段具有日期/时间数据类型。如果您希望在日期落在所选月份而不是计数时只看到结果中的“1”,请将第一行替换为
TRANSFORM IIf(Count([ID]) Is Null,0,1) AS [Flag]
【讨论】:
以上是关于组合命名记录列表并跟踪 SQL 中的日期字段的主要内容,如果未能解决你的问题,请参考以下文章