TCS54321 Ответов: 2

Проблема в SQL-запросе


у меня есть такой вопрос:

SELECT     FYear.Session, FeeHead.FeeHead ,  SUM(FeeItem.Amount) AS Total   
FROM         FeeItem 
INNER JOIN   FYear ON FYear.SessionID = FeeTransItem.SessionID
INNER JOIN   FeeHead ON FeeItem.FeeheadID = FeeHead.FeeHeadID       Where(FeeItem.FeeItemID = 18192)  
GROUP BY FYear.Tag ,FeeHead,FeeHead.Serial  


И его выход, как:-

Session    FeeHead        Total
20172018   tuition         2000
20172018   Admission(AC)   3000
20172018   Annual(AC)      3000


Но мне нужен вывод типа:-

Session    FeeHead        Total
20172018   tuition         2000
20172018   AnnualCharges   6000



Это означает, что если feehead содержит (AC), то feehead заменяется годовыми сборами, а также суммой общей суммы.

Что я уже пробовал:

SELECT     FYear.Session,case when FeeHead.FeeHead like '%(AC)%' then  replace(FeeHead.FeeHead,FeeHead.FeeHead,'Annual Charges')  else FeeHead.FeeHead end as FeeHead ,  
SUM(FeeItem.Amount) AS Total   
FROM         FeeItem 
INNER JOIN   FYear ON FeeItem.SessionID = FYear.SessionID 
INNER JOIN   FeeHead ON FeeItem.FeeheadID = FeeHead.FeeHeadID       Where(FeeItem.FeeItemID = 18192)  
GROUP BY FYear.Tag ,FeeHead,FeeHead.Serial  


Но это не работает.

2 Ответов

Рейтинг:
1

nane aa

То, что вы написали, абсолютно верно. только я ввел еще один запрос для этого вывода. может быть, это вам поможет.

with temp as (
SELECT FYear.Session, case when FeeHead.FeeHead like '%(AC)%' then  replace(FeeHead.FeeHead,FeeHead.FeeHead,'Annual Charges')  else FeeHead.FeeHead end as FeeHead,
SUM(FeeItem.Amount) AS Total   
FROM         FeeItem 
INNER JOIN   FYear ON FYear.SessionID = FeeTransItem.SessionID
INNER JOIN   FeeHead ON FeeItem.FeeheadID = FeeHead.FeeHeadID       Where(FeeItem.FeeItemID = 18192)  
GROUP BY FYear.Tag ,FeeHead,FeeHead.Serial  
)
select Session,FeeHead, SUM(Total) AS Total from temp
GROUP BY FeeHead


Рейтинг:
0

RickZeeland

Возможно, вы можете использовать два отдельных запроса и использовать UNION при первом использовании:

WHERE FeeHead.FeeHead NOT LIKE '%(AC)%'
а во втором запросе используйте:
FeeHead.FeeHead LIKE '%(AC)%'