I Got stuck with the query. Here is my scenario. I have two tables one is User and another is Transaction.
User table
Id Name Email
1 user1 user1@example.com
2 user2 user2@example.com
3 user3 user3@example.com
4 user4 user4@example.com
5 user5 user5@example.com
Transaction table
Id UserId Credit Debit Description DateAdded
1 1 10.00 0.00 Add-Cash 2020-05-19 00:00:00.000
2 2 0.00 15.00 Buy Course XYZ 2020-04-01 00:00:00.000
3 3 0.00 20.00 Buy Course ABC 2020-05-15 00:00:00.000
4 4 0.00 15.00 Buy Course IJK 2020-05-01 00:00:00.000
I need to get the list of users who haven't bought any course from the last 30 days. So I need to use where clause in the query. I used where clause but didn't get the expected result.
Below is my expected output.
Id Name Email
1 user1 user1@example.com
2 user2 user2@example.com
5 user5 user5@example.com
Here is what I'm doing to get the output
SELECT U.Id, U.Name, U.Email FROM [User] U
LEFT JOIN [Transaction] T ON U.Id=T.UserId
WHERE T.Description LIKE '%Buy Course%'
GROUP BY U.Id, U.Name, U.Email
HAVING MAX(T.DateAdded) <= (GETDATE()-30)
Below is the script for tables
create database Test
use Test
create table [User]
(
[Id] int,
[Name] nvarchar(50),
[Email] nvarchar(50)
)
create table [Transaction]
(
[Id] int,
[UserId] int,
[Credit] decimal(18,2),
[Debit] decimal(18,2),
[Description] nvarchar(100),
[DateAdded] datetime
)
insert into [User](Id, Name, Email) values(1,'user1','user1@example.com');
insert into [User](Id, Name, Email) values(2,'user2','user2@example.com');
insert into [User](Id, Name, Email) values(3,'user3','user3@example.com');
insert into [User](Id, Name, Email) values(4,'user4','user4@example.com');
insert into [User](Id, Name, Email) values(5,'user5','user5@example.com');
insert into [Transaction](Id, UserId, Credit, Debit, Description, DateAdded) values(1, 1, 10.00, 0.00, 'Add-Cash', '2020-05-19 00:00:00.000');
insert into [Transaction](Id, UserId, Credit, Debit, Description, DateAdded) values(2, 2, 0.00, 15.00, 'Buy Course XYZ', '2020-04-01 00:00:00.000');
insert into [Transaction](Id, UserId, Credit, Debit, Description, DateAdded) values(3, 3, 0.00, 20.00, 'Buy Course ABC', '2020-05-15 00:00:00.000');
insert into [Transaction](Id, UserId, Credit, Debit, Description, DateAdded) values(4, 4, 0.00, 15.00, 'Buy Course IJK', '2020-05-01 00:00:00.000');