我正在尝试从表B中获取位置ID最频繁的Zip_Code。表A(事务)每个事务有一个A.zip_code但表B(位置)有一个区域或城市的多个Zip_code。我正在尝试使用两个表中都存在的Location_D来获取帐户中最频繁的B.Zip_Code。我已经简化了我的代码并更改了列的名称以便于理解,但这是我的查询逻辑到目前为止。任何帮助,将不胜感激。提前谢谢。
Select
A.Account_Number,
A.Utility_Type,
A.Sum(usage),
A.Sum(Cost),
A.Zip_Code,
( select B.zip_Code from B where A.Location_ID= B.Location_ID having count(*)= max(count(B.Zip_Code)) as Location_Zip_Code,
A.Transaction_Date
From
Transaction_Table as A Left Join
Location Table as B On A.Location_ID= B.Location_ID
Group By
A.Account_Number,
A.Utility_Type,
A.Zip_Code,
A.Transaction_Date
答案 0 :(得分:1)
这就是我想出的:
Select tt.Account_Number, tt.Utility_Type, Sum(tt.usage), Sum(tt.Cost),
tt.Zip_Code,
(select TOP 1 l.zip_Code
Location_Table l
where tt.Location_ID = l.Location_ID
group by l.zip_code
order by count(*) desc
) as Location_Zip_Code,
tt.Transaction_Date
From Transaction_Table tt
Group By tt.Account_Number, tt.Utility_Type, tt.Zip_Code, tt.Transaction_Date;
注意:
sum(tt.usage)
而不是tt.sum(usage)
。order by
的{{1}}似乎是获取最常见邮政编码的方式(顺便提一下,统计信息中称为模式)。