Forum Discussion
Maghol
8 years agoFrequent Visitor
SQL to DAX
I have a flat table and want to view orders at a specific moment in time
order_id qty log_date 1 3 2018-03-03 1 2 2018-01-06 1 4 2017-12-04 1 6 2017-10-10 2 1 2018-02-01 2 3 2018-01-04 2 2 2018-01-02 2 4 2017-12-01
Expected result would be id=1, qty=4 and id=2, qty=3
How can I convert following SQL to DAX?
declare @selectedDate date;
set @selectedDate = cast('2018-01-05' as datetime);
select
rc1.order_id
, qty
from [dbo].[Orders] rc1
where
rc1.Logdate <= @selectedDate
and rc1.Logdate = (select MAX(rc2.logdate) from Orders rc2 where rc2.order_id = rc1.order_id)
Regards
HI Maghol
Please try this one
TEST = VAR TheDate = DATE ( 2018, 12, 5 ) RETURN SUMMARIZE ( Blad1, Blad1[order_id], "The_Qty", CALCULATE ( SUM ( Blad1[qty] ), TOPN ( 1, FILTER ( VALUES ( Blad1[log_date] ), Blad1[log_date] <= TheDate ), [log_date], DESC ) ) )
12 Replies
- Zubair_MuhammadCommunity Champion
Hi Maghol
Try this calculated Table
From the Modelling Tab>>NEW TABLE
Table = VAR mydate = DATE ( 2018, 1, 5 ) RETURN SUMMARIZE ( Table1, Table1[order_id], "Qty", CALCULATE ( SUM ( Table1[qty] ), LASTDATE ( FILTER ( VALUES ( Table1[log_date] ), Table1[log_date] <= mydate ) ) ) )- Zubair_MuhammadCommunity Champion
- MagholFrequent Visitor
Thanks for the reply but I get an error: "A date column containing duplicate dates was specified in the call to function 'LASTDATE'. This is not supported".
Log_date is in dateformat,