현재 Management Studio 2012에 SQL 쿼리를 작성하고 있습니다. TotalContributors
, TotalCharts
등의 총계를 수집하는 Date 매개 변수를 통합해야합니다. 주어진 날짜까지. "Running Sum"날짜 매개 변수 사용
DECLARE @DateEnd DATETIME = '06/13/2014'
DECLARE @GeneralStats TABLE (
TotalPapers INT,
SiteID BIGINT,
SiteEventGroupID INT,
EventCreateDate DATETIME,
AssignmentType VARCHAR(20),
AssignmentTypeIndex INT
);
INSERT INTO @GeneralStats
(TotalPapers ,
SiteID ,
SiteEventGroupID,
EventCreateDate,
AssignmentType,
AssignmentTypeIndex
)
SELECT
TotalPapers ,
SiteID,
SiteEventGroupID,
EventCreateDate,
CASE
WHEN TotalPapers BETWEEN 1 AND 4 THEN '1-4 Papers'
WHEN TotalPapers BETWEEN 5 AND 9 THEN '5-9 Papers'
WHEN TotalPapers BETWEEN 10 AND 24 THEN '10-24 Papers'
WHEN TotalPapers BETWEEN 25 AND 49 THEN '25-49 Papers'
WHEN TotalPapers BETWEEN 50 AND 99 THEN '50-99 Papers'
WHEN TotalPapers BETWEEN 100 AND 249 THEN '100-249 Papers'
WHEN TotalPapers BETWEEN 250 AND 499 THEN '250-499 Papers'
WHEN TotalPapers BETWEEN 500 AND 1000 THEN '500-1000 Papers'
WHEN TotalPapers > 1000 THEN 'Greater 1000'
END AssignmentType,
CASE
WHEN TotalPapers BETWEEN 1 AND 4 THEN '1'
WHEN TotalPapers BETWEEN 5 AND 9 THEN '2'
WHEN TotalPapers BETWEEN 10 AND 24 THEN '3'
WHEN TotalPapers BETWEEN 25 AND 49 THEN '4'
WHEN TotalPapers BETWEEN 50 AND 99 THEN '5'
WHEN TotalPapers BETWEEN 100 AND 249 THEN '6'
WHEN TotalPapers BETWEEN 250 AND 499 THEN '7'
WHEN TotalPapers BETWEEN 500 AND 1000 THEN '8'
WHEN TotalPapers > 1000 THEN '9'
END AssignmentTypeIndex
FROM (
SELECT
COUNT(c.PaperID) TotalPapers,
c.SiteID,
wfseg.SiteEventGroupID,
wfse.EventCreateDate
FROM
Sites s
INNER JOIN Papers c ON s.SiteID = c.SiteID
LEFT JOIN WFSiteEvents wfse ON s.SiteID = wfse.SiteID AND EventStatusID IN (1,2)
LEFT JOIN WFSiteEventTypes wfset ON wfse.EventTypeID = wfset.EventTypeID
LEFT JOIN WFSiteEventGroups wfseg ON wfset.SiteEventGroupID = wfseg.SiteEventGroupID
WHERE
c.SiteID <> 110
GROUP BY
c.SiteID,
wfseg.SiteEventGroupID,
wfse.EventCreateDate
) d
ORDER BY SiteID
SELECT
Main.CreateDate,
Main.AssignmentType,
Main.Contributors as TotalContributors,
Main.Papers as TotalPapers,
CONVERT(DECIMAL(10,2),Main.[%]) [Total%],
ISNULL(Type1.Contributors, 0) Type1Contributors ,
ISNULL(Type1.Papers,0) Type1Papers,
ISNULL(CONVERT(DECIMAL(10,2),Type1.[%]),0) [Type1%],
ISNULL(Type2.Contributors, 0) Type2Contributors ,
ISNULL(Type2.Papers, 0) Type2Papers ,
ISNULL(CONVERT(DECIMAL(10,2),Type2.[%]),0) [Type2%],
ISNULL(Type3.Contributors,0) Type3Contributors ,
ISNULL(Type3.Papers, 0) Type3Papers ,
ISNULL(CONVERT(DECIMAL(10,2),Type3.[%]), 0) [Type3%],
ISNULL(Type4.Contributors, 0) Type4Contributors ,
ISNULL(Type4.Papers, 0) Type4Papers ,
ISNULL(CONVERT(DECIMAL(10,2),Type4.[%]), 0) [Type4%],
ISNULL(Type5.Contributors, 0) Type5Contributors ,
ISNULL(Type5.Papers, 0) Type5Papers ,
ISNULL(CONVERT(DECIMAL(10,2),Type5.[%]), 0) [Type5%]
FROM
(
SELECT
CONVERT(varchar,EventCreateDate,101) as CreateDate,
AssignmentTypeIndex,
AssignmentType,
COUNT(DISTINCT SiteID) Contributors,
SUM(TotalPapers) Papers,
SUM(TotalPapers)*100.0/(SELECT SUM(TotalPapers) FROM @GeneralStats) [%]
FROM @GeneralStats
WHERE
CONVERT(VARCHAR,EventCreateDate, 101) <= @DateEnd
GROUP BY AssignmentType, AssignmentTypeIndex, CONVERT(varchar,EventCreateDate,101)
) Main
LEFT JOIN
(
SELECT
CONVERT(varchar,EventCreateDate,101) as CreateDate,
AssignmentType,
COUNT(DISTINCT SiteID) Contributors,
SUM(TotalPapers) Papers,
SUM(TotalPapers)*100.0/(SELECT SUM(TotalPapers) FROM @GeneralStats WHERE SiteEventGroupID = 3) [%]
FROM @GeneralStats
WHERE SiteEventGroupID = 3
AND CONVERT(VARCHAR,EventCreateDate, 101) <= @DateEnd
GROUP BY AssignmentType, CONVERT(varchar,EventCreateDate,101)
)Type1 ON Main.AssignmentType = Type1.AssignmentType
LEFT JOIN
(
SELECT
CONVERT(varchar,EventCreateDate,101) as CreateDate,
AssignmentType,
COUNT(DISTINCT SiteID) Contributors,
SUM(TotalPapers) Papers,
SUM(TotalPapers)*100.0/(SELECT SUM(TotalPapers) FROM @GeneralStats WHERE SiteEventGroupID = 4) [%]
FROM @GeneralStats
WHERE SiteEventGroupID = 4
AND CONVERT(VARCHAR,EventCreateDate, 101) <= @DateEnd
GROUP BY AssignmentType, CONVERT(varchar,EventCreateDate,101)
)Type2 ON Main.AssignmentType = Type2.AssignmentType
LEFT JOIN
(
SELECT
CONVERT(varchar,EventCreateDate,101) as CreateDate,
AssignmentType,
COUNT(DISTINCT SiteID) Contributors,
SUM(TotalPapers) Papers,
SUM(TotalPapers)*100.0/(SELECT SUM(TotalPapers) FROM @GeneralStats WHERE SiteEventGroupID = 2) [%]
FROM @GeneralStats
WHERE SiteEventGroupID = 2
AND CONVERT(VARCHAR,EventCreateDate, 101) <= @DateEnd
GROUP BY AssignmentType, CONVERT(varchar,EventCreateDate,101)
)Type3 ON Main.AssignmentType = Type3.AssignmentType
LEFT JOIN
(
SELECT
CONVERT(varchar,EventCreateDate,101) as CreateDate,
AssignmentType,
COUNT(DISTINCT SiteID) Contributors,
SUM(TotalPapers) Papers,
SUM(TotalPapers)*100.0/(SELECT SUM(TotalPapers) FROM @GeneralStats WHERE SiteEventGroupID = 9) [%]
FROM @GeneralStats
WHERE SiteEventGroupID = 9
AND CONVERT(VARCHAR,EventCreateDate, 101) <= @DateEnd
GROUP BY AssignmentType, CONVERT(varchar,EventCreateDate,101)
)Type4 ON Main.AssignmentType = Type4.AssignmentType
LEFT JOIN
(
SELECT
CONVERT(varchar,EventCreateDate,101) as CreateDate,
AssignmentType,
COUNT(DISTINCT SiteID) Contributors,
SUM(TotalPapers) Papers,
SUM(TotalPapers)*100.0/(SELECT SUM(TotalPapers) FROM @GeneralStats WHERE SiteEventGroupID = 8) [%]
FROM @GeneralStats
WHERE SiteEventGroupID = 8
AND CONVERT(VARCHAR,EventCreateDate, 101) <= @DateEnd
GROUP BY AssignmentType, CONVERT(varchar,EventCreateDate,101)
)Type5 ON Main.AssignmentType = Type5.AssignmentType
ORDER BY AssignmentTypeIndex
가 나는
DECLARE @DateEnd DATETIME = '06/13/2014'
에 추가하고 전역
@DateEnd
추가에 자상을했다하지만 정말 나에게 내가 원하는 결과를 얻을 수 없으며 올바른 형식으로하지 않습니다.
가 지금 나오는 방법 :
CreateDate | AssignmentType | TotalContributors | TotalPapers | Total% | Type1Contributors | Type1Papers | Type1% | Type2Contributors | Type2Papers | Type2% | Type3Contributors | Type3Papers | Type3% | Type4Contributors | Type4Papers | Type4% | Type5Contributors | Type5Papers | Type5%
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
04/28/2014 | 1-4 Papers | 11329 | 17478 | 2.24 | 19 | 42 | 0.02 | 6 | 11 | 0.01 | 4 | 9 | 0.00 | 1 | 1 | 0.00% | 7 | 10 | 0.09
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
04/28/2014 | 1-4 Papers | 11329 | 17478 | 2.24 | 19 | 42 | 0.02 | 6 | 11 | 0.01 | 4 | 9 | 0.00 | 1 | 1 | 0.00% | 3 | 8 | 0.07
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
04/28/2014 | 1-4 Papers | 11329 | 17478 | 2.24 | 19 | 42 | 0.02 | 6 | 11 | 0.01 | 4 | 9 | 0.00 | 1 | 1 | 0.00% | 2 | 7 | 0.06
-- etc. Running it actually takes FOREVER and I've never seen the end of it
내가 그것을 모양을하고 싶습니다 방법 :
CreateDate | AssignmentType | TotalContributors | TotalPapers | Total% | Type1Contributors | Type1Papers | Type1% | Type2Contributors | Type2Papers | Type2% | Type3Contributors | Type3Papers | Type3% | Type4Contributors | Type4Papers | Type4% | Type5Contributors | Type5Papers | Type5%
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
06/13/2014 | 1-4 Papers | --Total#upto6/13 -> for all rows
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
06/13/2014 | 5-9 Papers | --Total#upto6/13 -> for all rows
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
06/13/2014 | 10-24 Papers | --Total#upto6/13 -> for all rows
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
06/13/2014 | 25-49 Papers | --Total#upto6/13 -> for all rows
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
06/13/2014 | 50-99 Papers | --Total#upto6/13 -> for all rows
이 쿼리 중 하나 도대체 ... – Siyual
당신은 SQL 바이올린에 샘플 테이블 데이터의 비트를 설정하거나 일부를 게시 할 수있다 여기 몇 가지 샘플로 작업 할 수 있습니까? –
사이트에 논문을, 이벤트에 사이트를 추가 할 때 Papers.PaperID 수에 이벤트 수를 곱하면 정확하지 않은 숫자가 나옵니다. PFS를 WFSiteEvents에 연결하는 ID가 있습니까? –