“t”t\u SQL错误的第2列未指定列名

“t”t\u SQL错误的第2列未指定列名,sql,Sql,请注意,我只想从此T-SQL返回债务人ID。它给出了错误 没有为“t”的第2列指定列名。我的问题如下 with t as (SELECT debtorid,MAX(dbo.FollowUp.followupdate) FROM dbo.FollowUp WITH (NOLOCK) WHERE ( dbo.FollowUp.FollowUpDate >= '01-01-2011 00:00:00:000' and dbo.FollowUp.FollowUpDate <= '01-1

请注意,我只想从此T-SQL返回债务人ID。它给出了错误 没有为“t”的第2列指定列名。我的问题如下

 with t as 
(SELECT debtorid,MAX(dbo.FollowUp.followupdate) FROM dbo.FollowUp WITH (NOLOCK) WHERE
( dbo.FollowUp.FollowUpDate >= '01-01-2011 00:00:00:000' and dbo.FollowUp.FollowUpDate <= '01-13-2014 23:59:59.000'
and Status = 'PTP')  GROUP BY [Status], DebtorId)

SELECT t.debtorid FROM t;

就我所知不多,我认为以上这些对我来说应该行得通。然而,它没有。任何帮助都将不胜感激

您需要在第二列中添加一个名称,例如:

with t as 
(SELECT debtorid, MAX(dbo.FollowUp.followupdate) maxFollowup 
 FROM dbo.FollowUp WITH (NOLOCK) 
 WHERE dbo.FollowUp.FollowUpDate >= '01-01-2011 00:00:00:000' 
       and dbo.FollowUp.FollowUpDate <= '01-13-2014 23:59:59.000'
       and Status = 'PTP'
GROUP BY [Status], DebtorId)

SELECT t.debtorid FROM t;

您使用的是公共表表达式或CTE,在CTE中必须具有符合的列名。您还可以参考CTE最佳实践:


如果你只是想忽略它,为什么还要计算一个聚合呢?您是否明确希望忽略任何后续日期为2014-01-13T23:59:59.443的内容,或者您没有考虑使用抱歉的Pranav。请问如何将其用作子查询?我试过了,但它给了我错误。当我独立运行查询时,它会工作。但是,不能合并到另一个查询中。我认为这会有所帮助:这不会直接起作用,CTE将在上面&您可以使用union in DOWN和CTE别名
;with t as 
(
    SELECT FWP.debtorid
        ,MAX(FWP.followupdate) followupdate 
    FROM dbo.FollowUp  FWP WITH (NOLOCK) 
    WHERE
    ( 
        FWP.FollowUpDate >= '01-01-2011 00:00:00:000' 
         and FWP.FollowUpDate <= '01-13-2014 23:59:59.000'
         and FWP.Status = 'PTP'
    )  GROUP BY FWP.[Status], FWP.DebtorId
)
SELECT t.debtorid FROM t;