只选择log_table中修改日期是Sybase中最近7天的项目



我有一个没有修改日期的项目表和一个对所有表进行更改的日志表。在日志表中,您可以为一个项目拥有多条记录(每次更改内容时都会在日志表中写入一行)。我试图创建一个选择查询,只有在过去7天内创建/更新的项目。

我的查询有问题,因为我收到:

'derived table Log1 has no name for column 2' SQLCODE=-163

我代码:

select pr.projectid, 
pr.projecttitle
from   project pr
inner
join   (select   row_ID, 
max(date_action)
from     logtable_data 
group by row_ID
having   table_name = 'PROJECT'  
and      max(date_action) > dateadd(day,-7,convert(Date, getdate(), 365))
) Log1
on     pr.projectid = Log1.row_ID

-- table_name = 'PROJECT'仅表示'PROJECT'表与logtable表的变化

您的子查询正在连接子句中使用,因此它也被称为派生表

派生表必须为select列表中的每个列/表达式都有一个名称。

第二列/表达式-max(date_action)-没有名称,因此出现错误消息。

还有几个问题:

  • table_name = 'PROJECT'应以形式提供,其中子句
  • getdate()返回一个日期,所以没有必要将其结果转换为date,即convert(Date,...)是不必要的。(注意:我也假设date_action列数据类型为datedatetime]

pull this all together:

select pr.projectid, 
pr.projecttitle
from   project pr
inner
join   (select   row_ID, 
max(date_action) as max_action_date     -- 'as' clause used to name column
from     logtable_data 
where    table_name = 'PROJECT'                  -- limit data selection
group by row_ID
having   max(date_action) > dateadd(day,-7,getdate())
) Log1
on     pr.projectid = Log1.row_ID

最新更新