Как я могу получить желаемый вывод на основе двух таблиц на сервере sql:
CREATE TABLE [dbo].[Goal](
[Location] [varchar](50) NULL,
[Goal] [int] NULL,
[Month] [date] NULL
)
CREATE TABLE [dbo].[Master](
[Date] [date] NULL,
[Employee] [varchar](50) NULL,
[GP] [int] NULL,
[Location] [varchar](50) NULL
)
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'MG Road', 50000, CAST(0xB93D0B00 AS Date))
GO
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'Madiwala', 60000, CAST(0xB93D0B00 AS Date))
GO
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'Silk Board', 30000, CAST(0xB93D0B00 AS Date))
GO
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'BTM', 35000, CAST(0xB93D0B00 AS Date))
GO
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'MG Road', 55000, CAST(0xBA3D0B00 AS Date))
GO
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'Madiwala', 65000, CAST(0xBA3D0B00 AS Date))
GO
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'Silk Board', 35000, CAST(0xBA3D0B00 AS Date))
GO
INSERT [dbo].[Goal] ([Location], [Goal], [Month]) VALUES (N'BTM', 35000, CAST(0xBA3D0B00 AS Date))
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x283E0B00 AS Date), N'Ram', 2000, N'MG Road')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x283E0B00 AS Date), N'Ram', 1800, N'Silk Board')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x293E0B00 AS Date), N'Sami', 15000, N'BTM')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2A3E0B00 AS Date), N'Ram', 2500, N'Silk Board')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2A3E0B00 AS Date), N'Ram', 2500, N'MG Road')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x293E0B00 AS Date), N'Sami', 2000, N'BTM')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2A3E0B00 AS Date), N'Sami', 19000, N'Madiwala')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2E3E0B00 AS Date), N'Ram', 30000, N'MG Road')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2E3E0B00 AS Date), N'Ram', 30000, N'Madiwala')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2F3E0B00 AS Date), N'Ram', 25000, N'Madiwala')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2E3E0B00 AS Date), N'Sami', 20000, N'BTM')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2E3E0B00 AS Date), N'Sami', 15000, N'Silk Board')
GO
INSERT [dbo].[Master] ([Date], [Employee], [GP], [Location]) VALUES (CAST(0x2F3E0B00 AS Date), N'Sami', 15000, N'Silk Board')
на основе приведенных выше данных, я хочу вывод, как показано ниже:
Employe |Location |TotalGP|Month Goal |Goal %
Ram |MG Road |3800 |50000 |7.6
Ram |MG Road |5000 |50000 |10
Ram |Madiwala |60000 |65000 |92.30769231
Sami |Madiwala |17000 |60000 |28.33333333
Sami |Madiwala |19000 |60000 |31.66666667
Sami |Silk board |35000 |35000 |100
sami |Silk board |15000 |35000 |42.85714286
Ram |Madiwala |25000 |65000 |38.46153846
Я пробовал это:
select employee,date,sum(gp)totalgp
from master
group by employee,date
select * from
(select date,employee,location,gp,ROW_NUMBER() over (partition by employee,date order by gp desc ) as rn
from master
) a
where rn=1
вышеуказанный запрос не дал ожидаемого результата.
Goal%: totalgp / monthgoal * 100
Цель месяца: цель месяца должна быть выбрана из таблицы целей месяца,и он должен отображать цель местоположения, в котором сотрудник получил максимальную GP (сумму GP), например: Рам работал как в MG Road, так и в Мадивале, но его сумма GP больше в MG Road, так что MG road'Goalдиплэйм против Рама за апрель месяц, но за май месяц Цель Рама
Общее определение GP:
Например, Рэм 25-04-18 получил 2000 только на дороге MG, но в другом местев тот же день он заработал дополнительно 1800, поэтому мы отображаем 3800 для Рама независимо от местоположения
Определение столбца местоположения
Расположение - сотрудник может работать в одном или двух местах, но здесь выдолжен отображатьместо, в котором он набрал максимальный Gp (общий Gp за месяц, например: Рам работал как в MG Road, так и в Мадивале, но его сумма GP больше в MG Road, поэтому MG дорога проигрывается в апреле месяце, но в маемесяц Рам место расположения мадивала