0

次のテーブルがあります。

表 A:

[Location]    [TotalUsers] 
LocationA     5
LocationB     10
LocationC     6

表 B:

[User]        [FromLocation] [ToLocation] [StartDate] [EndDate] 
UserA         LocationA      LocationB    01/01/2013  05/05/2013
UserB         LocationB      LocationC    02/02/2013  04/04/2013

役立つカレンダー表もあります。

私がやりたいことは、カレンダー テーブル クエリ テーブル B の各日付に対して、特定の日に各サイトにいるユーザー数をカウントすることです。また、Table AI で全体のユーザー数を使用すると、毎日の合計を取得できます。

理想的には、結果のデータセットは次の形式になります。

[Date]           [LocationA]  [LocationB]  [LocationC]
01/01/2012       5            10           4

または

[Date]           [Location]  [UserCount]
01/01/2012       LocationA    10
01/01/2012       LocationB    10
01/01/2012       LocationC    10

必要に応じて詳細を提供できます。

4

1 に答える 1

0

表A

LOCATION    TOTAL_USERS
LOCATION_A  5
LOCATION_B  10
LOCATION_C  6

表B

USER    FROM_LOCATION   TO_LOCATION START_DATE  END_DATE
User_A  LOCATION_A  LOCATION_B  2013-01-01  2013-05-05 
User_B  LOCATION_B  LOCATION_C  2013-02-02  2013-04-04 

クエリ

DECLARE @DATE_TO_QUERY datetime = '01/01/2013'


SELECT 
    DATE_TO_QUERY, LOCATION_A, LOCATION_B, LOCATION_C
FROM (

SELECT 
    A.TOTAL_USERS,
    @DATE_TO_QUERY AS DATE_TO_QUERY,
    A.LOCATION
FROM TableA A
INNER JOIN TableB B
ON A.LOCATION = B.FROM_LOCATION
OR A.LOCATION = B.TO_LOCATION
WHERE DATEDIFF(DD, START_DATE, @DATE_TO_QUERY) >= 0
AND DATEDIFF(DD, @DATE_TO_QUERY, END_DATE) >= 0

) up
PIVOT (SUM(TOTAL_USERS) FOR  LOCATION IN (LOCATION_A, LOCATION_B, LOCATION_C)) AS pvt

上記のクエリの結果

DATE_TO_QUERY LOCATION_A    LOCATION_B  LOCATION_C
2013-01-01     5              10             NULL
于 2013-06-17T09:17:08.740 に答える