我想做的很简单,但我很挣扎。我希望有人可以提供帮助。
我有这个问题,我写过。
DECLARE @LeadGenerator AS nvarchar(20) = 'Employee Name'
SELECT C.BaseDate AS BaseDate
,COUNT(P.OwnCreatedDate) AS CreatedLeads
,COUNT(P2.OwnCreatedDate) AS CreatedResearchedLeads
,COUNT(P3.AppointmentFeatureDate) AS AppointmentsMade
FROM dwCalendar C
LEFT JOIN dwTable P ON P.OwnCreatedDate = C.BaseDate AND P.OwnerStatus NOT IN ('Researched') AND P.LeadAssignee = @LeadGenerator
LEFT JOIN dwTable P2 ON P2.OwnCreatedDate = C.BaseDate AND P2.OwnerStatus IN ('Researched') AND P2.LeadAssignee = @LeadGenerator
LEFT JOIN dwTable P3 ON P3.AppointmentFeatureDate = C.BaseDate AND P3.LeadAssignee = @LeadGenerator
WHERE C.BaseDate BETWEEN DATEADD(DD, -8, GETDATE()) AND DATEADD(DD, -1, GETDATE())
GROUP BY C.BaseDate
它以这种格式返回数据:
Basedate | CreatedLeads | CreatedLeads | AppointmentsMade
2015-06-18 | 1 | 2 | 0
2015-06-19 | 2 | 1 | 2
2015-06-20 | 1 | 1 | 1
2015-06-21 | 1 | 2 | 3
2015-06-22 | 2 | 0 | 0
2015-06-23 | 3 | 2 | 2
2015-06-24 | 0 | 0 | 1
我想转动数据,以便日期在顶部,然后,CreatedLeads,CreatedLeadsResearched和AppointmentsMade成为行的开始,然后是数据。
所以数据看起来更像是这样:
2015-06-18 | 2015-06-19 | 2015-06-20 | 2015-06-21
CreatedLeads | Respective data in here
CreatedLeadsResearched |
AppointmentsMade |
如果有人可以请求帮助,那就太好了,因为我被卡住了?
提前致谢,
感谢您的帮助,我尝试了脚本,这是sql:
DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)
DECLARE @LeadGenerator AS nvarchar(20) = 'Employee Name'
SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([BaseDate])
FROM dwCalendar FOR XML PATH('') ), 1, 1, '')
SET @sqlquery = 'SELECT * FROM
(
SELECT C.BaseDate AS BaseDate
,COUNT(P.OwnCreatedDate) AS CreatedLeads
,COUNT(P2.OwnCreatedDate) AS CreatedResearchedLeads
,COUNT(P3.AppointmentFeatureDate) AS AppointmentsMade
FROM dwCalendar C
LEFT JOIN dwOwnerTouchPoints P ON P.OwnCreatedDate = C.BaseDate AND P.OwnerStatus NOT IN (''Researched'') AND P.LeadAssignee = @LeadGenerator
LEFT JOIN dwTable P2 ON P2.OwnCreatedDate = C.BaseDate AND P2.OwnerStatus IN (''Researched'') AND P2.LeadAssignee = @LeadGenerator
LEFT JOIN dwTable P3 ON P3.AppointmentFeatureDate = C.BaseDate AND P3.LeadAssignee = @LeadGenerator
WHERE C.BaseDate BETWEEN DATEADD(DD, -8, GETDATE()) AND DATEADD(DD, -1, GETDATE())
GROUP BY C.BaseDate ) base
PIVOT (Sum(CreatedLeads) FOR [BaseDate]
IN (' + @cols + ')) AS finalpivot'
EXECUTE ( @sqlquery )
然而,当我尝试这个时,我收到了这个错误:
Msg 137, Level 15, State 2, Line 11
Must declare the scalar variable "@LeadGenerator".
Msg 105, Level 15, State 1, Line 19
Unclosed quotation mark after the character string 'Apr 28 20)) AS
finalpivot'.
真的很遗憾我只是不明白这里发生了什么。