我有2个名为area和loc_hist的表。
在区域表中存在分区列表,并且在loc_hist分区中与其他3个号码组合并给出其他详细信息。 INPUT
区域
[yourTextField resignFirstResponder]
Loc_Hist
div div_name
11 ATALANTA
14 Columbo
这里的Loc是(div的前2位数或其他列的最后3位数)。
输出
Item Loc
0012 11378
0013 11378
0014 11378
0015 14425
所以我的问题是如何从每个部门的loc_hist表中获取记录? 提前致谢
答案 0 :(得分:2)
这就是你在T-SQL中的表现方式
create table #area (div int, div_name nvarchar(20))
create table #Loc_hist (item nvarchar(10), Loc int)
insert into #area (div, div_name)
values
(11, 'ATALANTA'),
(14, 'Columbo')
insert into #loc_hist (Item, Loc)
values
('0012', 11378),
('0013', 11378),
('0014', 11378),
('0015', 14425)
select ar.div, count(*) from #loc_hist lh
join #area ar on LEFT(lh.loc,2) = ar.div
group by ar.div
答案 1 :(得分:2)
via:Oracle
select t1.div,
count(t2.Loc) as cnt
from (select div,
case when length(div)=2
then div
when length(div)=3
then substr(div,1,1)||substr(div,3,1)
else null end as dive
from Area) t1
left join Loc_hist t2
on t1.dive = substr(t2.Loc,1,2)
group by t1.div
现在你可以在3位div和2位div中得到它。但是如果你的div类型是int或者数字或者浮点数,你可能会遇到一些问题。在这种情况下,你只需转换情况然后部分它将是完成
像这样: (select div,
case when length(div)=2
then div
when length(div)=3
then to_number(substr(div,1,1)||substr(div,3,1))
else null end as dive
from Area) t1
或者您可以选择在连接条件中使用大小写时间来执行此部分。但我不建议
答案 2 :(得分:2)
这就是你在oracle中的表现方式
select a.div,count(*) from area a
inner join loc_hist b
on substr(a.div,1,2) = substr(b.loc,1,2)
group by a.div