I'm executing this query and I want to add where Age > 120
, but since Age
is not a column, I couldn't do it.
Can you help me to do that
select
a.NUM_CHASSIS, a.MARQUE, a.MODELE, a.FINITION,
b.CMD_Vente_Incadea, b.Fact_Av_Incadea,
a.DATE_FIN_OF, DATEDIFF(DAY, a.DATE_FIN_OF, GETDATE()) as Age
from
[DashboardPowerBi].[dbo].[BI_SVC_PROD_FIN_OF] as a
join
BI_SVC_INCADEA_STOCK_VN as b on a.NUM_CHASSIS = b.VIN
where
b.CMD_Vente_Incadea = 0
and b.Fact_Av_Incadea = 1
You could add the expression to your WHERE
:
SELECT PF.NUM_CHASSIS,
PF.MARQUE,
PF.MODELE,
PF.FINITION,
ISV.CMD_Vente_Incadea,
ISV.Fact_Av_Incadea,
PF.DATE_FIN_OF,
DATEDIFF(DAY, PF.DATE_FIN_OF, GETDATE()) AS Age
FROM [DashboardPowerBi].[dbo].[BI_SVC_PROD_FIN_OF] AS PF
JOIN BI_SVC_INCADEA_STOCK_VN AS ISV ON PF.NUM_CHASSIS = ISV.VIN
WHERE ISV.CMD_Vente_Incadea = 0
AND ISV.Fact_Av_Incadea = 1
AND DATEDIFF(DAY, PF.DATE_FIN_OF, GETDATE()) > 120;
Or use a CTE/Subquery:
WITH CTE AS(
SELECT PF.NUM_CHASSIS,
PF.MARQUE,
PF.MODELE,
PF.FINITION,
ISV.CMD_Vente_Incadea,
ISV.Fact_Av_Incadea,
PF.DATE_FIN_OF,
DATEDIFF(DAY, PF.DATE_FIN_OF, GETDATE()) AS Age
FROM [DashboardPowerBi].[dbo].[BI_SVC_PROD_FIN_OF] AS PF
JOIN BI_SVC_INCADEA_STOCK_VN AS ISV ON PF.NUM_CHASSIS = ISV.VIN
WHERE ISV.CMD_Vente_Incadea = 0
AND ISV.Fact_Av_Incadea = 1)
SELECT *
FROM CTE
WHERE CTE.Age > 120;
Also, note I changed your aliases to something more relevant. Using aliases that represent the object's name is really important as it makes your code much more readable. Aaron Bertrand did a great article on the subject: Bad habits to kick : using table aliases like (a, b, c) or (t1, t2, t3) .
cross apply
is a convenience in this circumstance:
select bfo.NUM_CHASSIS, bfo.MARQUE, bfo.MODELE, bfo.FINITION,
s.CMD_Vente_Incadea, s.Fact_Av_Incadea, bfo.DATE_FIN_OF,
v.Age
from [DashboardPowerBi].[dbo].[BI_SVC_PROD_FIN_OF] bfo join
BI_SVC_INCADEA_STOCK_VN s
on bfo.NUM_CHASSIS = s.VIN cross apply
(values (DATEDIFF(DAY, bfo.DATE_FIN_OF, GETDATE())) v(age)
where s.CMD_Vente_Incadea = 0 and s.Fact_Av_Incadea = 1 and
v.age > 120;
Notice that I also changed the table aliases so your query is easier to follow.
select a.NUM_CHASSIS,a.MARQUE,a.MODELE,a.FINITION,b.CMD_Vente_Incadea,b.Fact_Av_Incadea,a.DATE_FIN_OF ,DATEDIFF(DAY, a.DATE_FIN_OF, GETDATE()) as Age from [DashboardPowerBi].[dbo].[BI_SVC_PROD_FIN_OF] as a
join BI_SVC_INCADEA_STOCK_VN as b
on a.NUM_CHASSIS = b.VIN
where b.CMD_Vente_Incadea = 0 and b.Fact_Av_Incadea =1 AND DATEDIFF(DAY, a.DATE_FIN_OF, GETDATE())>120
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.