Dynamic SQL
Dynamic SQL
Sales (
salesId INT PRIMARY KEY IDENTITY(1,1),
[Year] INT,
[Month] VARCHAR(200),
Amount DECIMAL(10, 2)
);
INSERT INTO dbo.Sales (year, month, Amount) VALUES
(2025, 'January', 1000.00),
(2025, 'February', 1500.00),
(2025, 'March', 1200.00),
(2025, 'April', 1300.00),
(2025, 'May', 1100.00),
(2025, 'June', 1400.00),
(2025, 'July', 1600.00),
(2025, 'August', 1700.00),
(2025, 'September', 1800.00),
(2025, 'October', 1900.00),
(2025, 'November', 2000.00),
(2025, 'December', 2100.00),
(2024, 'January', 1000.00),
(2024, 'February', 1500.00),
(2024, 'March', 1200.00),
(2024, 'April', 1300.00),
(2024, 'May', 1100.00),
(2024, 'June', 1400.00),
(2024, 'July', 1600.00),
(2024, 'August', 1700.00);
SELECT * FROM dbo.Sales
/*Basic Dynamic*/
/*Create procedure*/
IF(@Input='Month')
BEGIN
SET @Function='Month'
END
IF(@Input='Year')
BEGIN
SET @Function='Year'
END
SET @DySQL='SELECT ' + @Function + ',SUM(Amount) Total,avg(amount) avgamount
FROM dbo.Sales
GROUP BY '+ @Function
EXEC (@DySQL)
/*****/