У меня есть особое требование, когда у нас есть даты начала и окончания отчета. Таким образом, когда пользователь выбирает даты начала и окончания в отчете, он должен иметь возможность извлекать все записи, если они попадают под дату начала или окончания, и соответственно корректировать даты позже. Мне нужно, чтобы это было выполнено в DAX Query .
Ниже приведен лишь пример того, как выглядит набор данных:
DDL:
CREATE TABLE [#Promos]
([ProductNumber] INT,
[StartDate] DATE,
[EndDate] DATE,
[PromoCode] VARCHAR(6),
[DaysAvailableInWeek] VARCHAR(20)
);
DML:
INSERT INTO [#Promos] ([ProductNumber], [StartDate], [EndDate], [PromoCode], [DaysAvailableInWeek])
VALUES (6512, '2020-01-11', '2020-01-13', 'ABC123', '1, 3, 5');
INSERT INTO [#Promos] ([ProductNumber], [StartDate], [EndDate], [PromoCode], [DaysAvailableInWeek])
VALUES(6514, '2020-01-12', '2020-01-14', 'ABC123', '4, 6');
INSERT INTO [#Promos] ([ProductNumber], [StartDate], [EndDate], [PromoCode], [DaysAvailableInWeek])
VALUES(2341, '2020-01-11', '2020-01-25', '321XYZ', '1, 2');
Пример-1:
SELECT *
FROM #Promos
WHERE [StartDate] = '2020-01-12'
AND [EndDate] = '2020-01-14'
ORDER BY 1;
Ожидаемый результат для вышеуказанного запроса должно быть:
ProductNumber StartDate EndDate PromoCode DaysAvailableInWeek
2341 2020-01-12 2020-01-14 ABC123 1, 2
6512 2020-01-12 2020-01-13 ABC123 1, 3, 5
6514 2020-01-12 2020-01-14 ABC123 4, 6
Пример-2:
SELECT *
FROM #Promos
WHERE [StartDate] = '2020-01-11'
AND [EndDate] = '2020-01-13'
ORDER BY 1;
Ожидаемый результат для вышеуказанного запроса должен быть:
ProductNumber StartDate EndDate PromoCode DaysAvailableInWeek
2341 2020-01-11 2020-01-13 ABC123 1, 2
6512 2020-01-11 2020-01-13 ABC123 1, 3, 5
6514 2020-01-12 2020-01-13 ABC123 4, 6
Пример-3:
SELECT *
FROM [#Promos]
WHERE [StartDate] = '2020-01-11'
AND [EndDate] = '2020-01-12'
ORDER BY 1;
Ожидаемый результат для вышеуказанного запроса должен быть:
ProductNumber StartDate EndDate PromoCode DaysAvailableInWeek
2341 2020-01-11 2020-01-12 ABC123 1, 2
6512 2020-01-11 2020-01-12 ABC123 1, 3, 5
6514 2020-01-12 2020-01-12 ABC123 4, 6
То, что я до сих пор пробовал с SQL:
SET @StartDate = '2020-01-12';
SET @EndDate = '2020-01-14';
SELECT [ProductNumber],
CASE
WHEN @StartDate BETWEEN [StartDate] AND [EndDate] THEN @StartDate
WHEN @StartDate < [StartDate] THEN [StartDate]
END AS [StartDate],
CASE
WHEN @EndDate BETWEEN [StartDate] AND [EndDate] THEN @EndDate
WHEN @EndDate > [EndDate] THEN [EndDate]
END AS [EndDate],
[PromoCode],
[DaysAvailableInWeek]
FROM [#Promos]
WHERE [StartDate] <= @EndDate
AND [EndDate] >= @StartDate
ORDER BY 1;
Но мне нужно что-то с DAX. Может ли кто-нибудь помочь, пожалуйста?
Спасибо!