DECLARE @T TABLE
(
SiteID INT,
SiteName VARCHAR(100),
MondayVisitCount Int,
TuesdayVisitCount Int,
WednesdayVisitCount Int,
ThursdayVisitCount Int,
FridayVisitCount Int,
SaturdayVisitCount INT,
SundayVisitCount Int
)
INSERT INTO @T
(
SiteID,
SiteName ,
MondayVisitCount ,
TuesdayVisitCount ,
WednesdayVisitCount ,
ThursdayVisitCount ,
FridayVisitCount ,
SaturdayVisitCount ,
SundayVisitCount
)
SELECT ID, SiteName
FROM Sites
SELECT COUNT(*) AS N, Site_Id, DATEPART(weekday, EntryTime) AS [DayOfWeek]
INTO #tmpVisits
FROM [dbo].Visits WITH (NOLOCK)
--DATE FILTER GOES HERE
GROUP BY DATEPART(weekday, EntryTime), Site_Id
UPDATE @T
SET SundayVisitCount = tVisits.N
FROM @T AS tResult
INNER JOIN #tmpVisits AS tVisits ON tVisits.Site_Id = tResult.Id AND tVisits.[DayOfWeek] = 1
UPDATE @T
SET MondayVisitCount = tVisits.N
FROM @T AS tResult
INNER JOIN #tmpVisits AS tVisits ON tVisits.Site_Id = tResult.Id AND tVisits.[DayOfWeek] = 2
--.
--.
--.
--.
UPDATE @T
SET SaturdayVisitCount = tVisits.N
FROM @T AS tResult
INNER JOIN #tmpVisits AS tVisits ON tVisits.Site_Id = tResult.Id AND tVisits.[DayOfWeek] = 7
SELECT *
FROM @T
DROP TABLE #tmpVisits
私は、これはあなたのクエリにお答えしますね。 http://stackoverflow.com/questions/15745042/efficiently-convert-rows-to-columns-in-sql-server – BlueSky
@BlueSkyあなたのリンクは、ピボットを使用してランダムな質問であると思われる点を指しています。私はピボットを使用する以外は、質問に関係があることはわかりません –