I am having an issue creating a derived table. The query I am using works in SQL Server Query Analyzer and each column has an explicit name. My query is as follows:
Select
HBS_Response.HBS_Id,
SUM(HBS_Response.Score) Total_Score,
(Case When SUM(HBS_Response.Score) Is Not Null And SUM(HBS_Response.Score)= 50 Then 1 else 0 End) Evangelical,
(Case When SUM(HBS_Response.Score) Is Not Null And SUM(HBS_Response.Score)<> 50 Then 1 else 0 End) Non_Evangelical
From
HBS_Question,
HBS_Response
Where
HBS_Question.Q_Id = HBS_Response.Q_Id
AND HBS_Question.Q_Number In (‘1’,‘2’,‘3’,‘4’,‘5’)
Group By HBS_Response.HBS_id
When I use this same query in Designer, creating a derived table, I get “Each calculated column must have an explicit name” as an error. Does anyone know why?
Select
HBS_Response.HBS_Id,
SUM(HBS_Response.Score) AS Total_Score,
(Case When SUM(HBS_Response.Score) Is Not Null And SUM(HBS_Response.Score)= 50 Then 1 else 0 End) AS Evangelical,
(Case When SUM(HBS_Response.Score) Is Not Null And SUM(HBS_Response.Score)<> 50 Then 1 else 0 End) AS Non_Evangelical
From
HBS_Question,
HBS_Response
Where
HBS_Question.Q_Id = HBS_Response.Q_Id
AND HBS_Question.Q_Number In ('1','2','3','4','5')
Group By HBS_Response.HBS_id
Basically I added AS. Designer likes to have aliases with AS
I figured out the issue. Designer does not use native syntax the correct syntax for Designer is as follows:
Select
HBS_Response.HBS_Id,
SUM(HBS_Response.Score) As ‘Total_Score’,
(Case When SUM(HBS_Response.Score) Is Not Null And SUM(HBS_Response.Score)= 50 Then 1 else 0 End) As ‘Evangelical’,
(Case When SUM(HBS_Response.Score) Is Not Null And SUM(HBS_Response.Score)<> 50 Then 1 else 0 End) As ‘Non_Evangelical’
From
HBS_Question,
HBS_Response
Where
HBS_Question.Q_Id = HBS_Response.Q_Id
AND HBS_Question.Q_Number In (‘1’,‘2’,‘3’,‘4’,‘5’)
Group By HBS_Response.HBS_id
Hey…it’s not working with my scenario…
I’m having below code on Teradata -
SELECT
Branch_Inv_Dt as Branch_Inv_Dt,
CASE when MONTH(fiscal_year.calendar_dt) > 3 then YEAR(fiscal_year.calendar_dt) + 1 Else YEAR(fiscal_year.calendar_dt) End as Acctg_Period_Year_Id,
max(Unit_Cost_Amt) as Unit_Cost_Amt,
max(Returns_Flg) as Returns_Flg,
max(Inventory_Flg) as Inventory_Flg,
max(Manufacturing_Flg) as Manufacturing_Flg,
max(Sales_Flg) as Sales_Flg,
max(Price_Per_Unit_Amt) as Price_Per_Unit_Amt,
sum(TableA.Imp_Available_Qty) as Inventory_Qty,
sum(TableA.Imp_Available_Qty * Unit_Cost_Amt) as Inventory_Cost
FROM
TableA,
Tblcalendar_date fiscal_year
WHERE
fiscal_year.calendar_dt =
case
when cast(@Prompt('Select Date','D',,MONO,free,,{'{d ''1900-01-01''}'}) as date) = '1900-01-01'
then date
else cast(@Prompt('Select Date','D',,MONO,free,,{'{d ''1900-01-01''}'}) as date)
end
AND TableA.Branch_Inv_Dt =fiscal_year.calendar_dt
group by 1,2
This code does works fine when we replace actual values instead of @Prompt values. Not sure why its giving error in derived table.