【发布时间】:2017-10-13 10:47:40
【问题描述】:
为了报告和创建报告(MS SQL SERVER 2014),它将比较最后一天、上周同一天和上个月同一天的交易数量和金额,我需要一些像这样的查询,但它不起作用:
Select
Acquirer = case when Date = @Day then a.Acquirer
when Date = @LastWeekDay then b.Acquirer
when Date = @LastMonthDay then c.Acquirer
end
, RC = case when Date = @Day then a.RC
when Date = @LastWeekDay then b.RC
when Date = @LastMonthDay then c.RC
end
, Desc = case when Date = @Day then a.Desc
when Date = @LastWeekDay then b.Desc
when Date = @LastMonthDay then c.Desc
end
, Day_Tr_Count = case when Date = @Day then a.Count end
, LWD_Tr_Count = case when Date = @LastWeekDay then b.Count end
, LMD_Tr_Count = case when Date = @LastMonthDay then c.Count end
, Day_Tr_Amount = case when Date = @Day then a.Amount end
, LWD_Tr_Amount = case when Date = @LastWeekDay then b.Amount end
, LMD_Tr_Amount = case when Date = @LastMonthDay then c.Amount end
from
( select * from T1
union
select * from T2
union
select * from T3) x
group by Acquirer,RC,Desc
所有 3 个表的结构都非常相似:
T1,T2,T3(acquirer,RC,Desc,Count,Amount,Date).
报告应该是:
result_table(Acquirer,RC,Desc,Daily_Count,Last_Week_Day_Count,Last_Month_Count,Daily_Amount,Last_Week_Day_Amount,Last_Month_Day_Amount)
【问题讨论】:
-
第 1 步:您可能想要
UNION ALL。 -
如何不工作?
-
一般 GROUP BY 规则说:“如果指定了 GROUP BY 子句,则 SELECT 列表中的每个列引用必须标识一个分组列或作为集合函数的参数。”
-
因为他在查询别名中没有a、b、c表
-
我不明白为什么人们会写出带有这么多基本错误的庞大查询...他们应该一步一步地这样做,以防他们不知道自己在做什么。
标签: sql sql-server select case union