-1

I am having an error on the column "PREMIUM" when the premium exist on the select statement. I am not sure what I am doing wrong.

SELECT QUIKPLAN.FORMS, COALESCE(NEWQUIKVALF1.MVALDATE, '2022-09-30') AS ReportDate, ISNULL((SUM(NEWQUIKVALF1.MANNLZD)/12),0) AS PREMIUM
FROM QUIKPLAN
LEFT JOIN dbo.NEWQUIKVALF1 ON QUIKPLAN.NEWPLAN=NEWQUIKVALF1.NPLAN
GROUP BY QUIKPLAN.FORMS, NEWQUIKVALF1.MVALDATE
HAVING ((QUIKPLAN.FORMS)='L-4054' and ((PREMIUM)>1))

This code works in Snowflake, but it is not working in SQL Server. Thanks for your help.

Dale K
  • 25,246
  • 15
  • 42
  • 71
Desmond
  • 1
  • 2

3 Answers3

0

As mentioned in the comment above, you cannot access a calculated field within the same query scope. However, you can use the same calculation twice with no penalty.

SELECT 
    QUIKPLAN.FORMS, 
    COALESCE(NEWQUIKVALF1.MVALDATE, '2022-09-30') AS ReportDate, 
    ISNULL((SUM(NEWQUIKVALF1.MANNLZD)/12),0) AS PREMIUM
FROM 
    QUIKPLAN
    LEFT JOIN dbo.NEWQUIKVALF1 ON QUIKPLAN.NEWPLAN=NEWQUIKVALF1.NPLAN
GROUP BY QUIKPLAN.FORMS, NEWQUIKVALF1.MVALDATE
HAVING ((QUIKPLAN.FORMS)='L-4054' and ((ISNULL((SUM(NEWQUIKVALF1.MANNLZD)/12),0))>1))
Ross Bush
  • 14,648
  • 2
  • 32
  • 55
0

you need to do this :

SELECT 
    QUIKPLAN.FORMS
    , COALESCE(NEWQUIKVALF1.MVALDATE, '2022-09-30') AS ReportDate
    , ISNULL((SUM(NEWQUIKVALF1.MANNLZD)/12),0) AS PREMIUM
FROM QUIKPLAN
LEFT JOIN dbo.NEWQUIKVALF1 
   ON QUIKPLAN.NEWPLAN=NEWQUIKVALF1.NPLAN
WHERE (QUIKPLAN.FORMS)='L-4054'
GROUP BY QUIKPLAN.FORMS, NEWQUIKVALF1.MVALDATE
HAVING ISNULL((SUM(NEWQUIKVALF1.MANNLZD)/12),0) >1
eshirvana
  • 23,227
  • 3
  • 22
  • 38
0

You can use a CTE for that

WITH CTE AS (SELECT QUIKPLAN.FORMS, COALESCE(NEWQUIKVALF1.MVALDATE, '2022-09-30') AS ReportDate, ISNULL((SUM(NEWQUIKVALF1.MANNLZD)/12),0) AS PREMIUM
FROM QUIKPLAN
LEFT JOIN dbo.NEWQUIKVALF1 ON QUIKPLAN.NEWPLAN=NEWQUIKVALF1.NPLAN
GROUP BY QUIKPLAN.FORMS, NEWQUIKVALF1.MVALDATE
HAVING QUIKPLAN.FORMS ='L-4054' )

SELECT FORMS, ReportDate,PREMIUM
FROM CTE
WHERE PREMIUM>1
nbk
  • 45,398
  • 8
  • 30
  • 47