问题描述
执行以下查询
SELECT St.FirstName,St.LastName,CASE
WHEN St.ISPackage='N' THEN Min(St.VisitingDate)
WHEN St.ISPackage='Y' THEN St.VisitingDate
END AS VisitingDate
FROM SalesTransaction As St
(...inner join and where clause)
GROUP BY St.FirstName,St.VisitingDate
如果我在Group By
中使用St.VisitingDate,则结果将重复。
如果Group By
中未使用St.VisitingDate,则会显示错误
在选择列表中无效,因为它既不在聚合函数中也不包含
我该如何解决这个问题?
解决方法
我怀疑您要按名称分组并在ISPackage
为“ Y”时获得访问日期,如果没有{{ 1}}是“ Y”。
如果是这样,您可以这样做:
ISPackage
,
您可以在下面的SQL中使用- 我使用子查询计算了最小日期。
SELECT St.FirstName,St.LastName,CASE
WHEN St.ISPackage='Y' THEN St.VisitingDate
ELSE min_dt.min_VisitingDate
END AS VisitingDate
FROM
SalesTransaction As St
(...inner join and where clause)
left join (select St.FirstName,min(St.VisitingDate) min_VisitingDate from SalesTransaction group by St.FirstName,St.LastName) min_dt
ON St.FirstName =min_dt.FirstName,St.LastName =min_dt.LastName