Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Server,选择任意给定日期某个位置的用户数_Sql_Sql Server 2008 - Fatal编程技术网

Sql Server,选择任意给定日期某个位置的用户数

Sql Server,选择任意给定日期某个位置的用户数,sql,sql-server-2008,Sql,Sql Server 2008,我有以下表格: 表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

我有以下表格:

表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中的每个日期进行计算,以计算在任何给定的一天每个站点有多少用户。Alos使用表A中的总用户数,我可以得到每天的总用户数

理想情况下,结果数据集的格式为:

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

如果需要,我可以提供更多细节。

表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 
质疑

以上查询的结果

DATE_TO_QUERY LOCATION_A    LOCATION_B  LOCATION_C
2013-01-01     5              10             NULL

FromLocation
ToLocation
代表什么?两者是否都对特定位置的用户数有贡献,还是只有一个?(例如,只有
ToLocation
matters?)一些示例数据和预期结果会有所帮助(请在示例中包括多个位置和用户)。如果您可以向我们提供表结构,那么会更容易。谢谢
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