2015-07-22 5 views
1

Это мой запросГруппа по подстроке и сумму

select U_YBID, T1.onhand 
from oitw T1 
inner join oitm T2 on T1.ItemCode=T2.ItemCode 
where T1.WhsCode='01' and U_YBID is not null and u_YBId like '%/%' 

Это дает такой вывод:

302/02 41.000000 
302/01 23.000000 
X82/02 20.000000 
355/01 2.000000 
355/02 4.000000 
355/03 5.000000 

мне нужен запрос, который дает sum и идентификатор для, например:

302 64 
x82 20 
355 11 

ответ

1

Вы можете использовать left:

select left(U_YBID, 3) 
    , sum(T1.onhand) 
from oitw T1 
inner join oitm T2 on T1.ItemCode = T2.ItemCode 
where T1.WhsCode = '01' and u_YBId like '%/% 
group by left(U_YBID, 3) 
0

Вы должны использовать substring и group by

select substring(U_YBID,1,3), sum(T1.onhand) 
from oitw T1 
inner join oitm T2 on T1.ItemCode=T2.ItemCode 
where T1.WhsCode='01' and U_YBID is not null and u_YBId like '%/% 
group by substring(U_YBID,1,3) 
0

Если длина строки в колонке U_YBID до / не статична, чтобы 3, то вы можете написать запрос как:

SELECT U_YBID,SUM (T1.onhand) AS T1.onhand 
FROM 
( 
select PARSENAME(REPLACE(U_YBID, '/', '.'), 2) AS U_YBID , T1.onhand 
from oitw T1 
inner join oitm T2 on T1.ItemCode=T2.ItemCode 
where T1.WhsCode='01' and U_YBID is not null and u_YBId like '%/%' 
)AS T 
GROUP BY U_YBID 

Вы можете узнать больше о PARSENAME функция here..

Смежные вопросы