0

我有一个查询,用于搜索每天多次访问的客户。如果我在 1 个特定的日子里运行这个查询,它就可以工作。我想做的是能够查询一系列日期。例如,我想搜索 12/1/12 - 1/31/13 并让它每天检查多次访问,并显示客户多次访问的日期。以下是我的查询不起作用:

SELECT        Customers.sBarcode, COUNT(Customers.sBarcode) AS [Number of Scans], Tickets.dtCreated
FROM            Tickets INNER JOIN
                         Customers ON Tickets.lCustomerID = Customers.lCustomerID
WHERE        (Tickets.dtCreated BETWEEN CONVERT(DATETIME, '2012-12-11 00:00:00', 102) AND CONVERT(DATETIME, '2012-12-12 00:00:00', 102)) AND (Tickets.dblTotal <= 0)
GROUP BY Customers.sBarcode, Tickets.dtCreated
HAVING        (COUNT(*) > 1)
4

2 回答 2

1

尝试这样的事情:

SELECT  Customers.sBarcode ,
        CAST(FLOOR(CAST(Tickets.dtCreated AS FLOAT)) AS DATETIME) AS dtCreatedDate ,
        COUNT(Customers.sBarcode) AS [Number of Scans]
FROM    Tickets
        INNER JOIN Customers ON Tickets.lCustomerID = Customers.lCustomerID
WHERE   ( Tickets.dtCreated BETWEEN CONVERT(DATETIME, '2012-12-01 00:00:00', 102)
                            AND     CONVERT(DATETIME, '2013-01-31 23:59:59', 102) )
        AND ( Tickets.dblTotal <= 0 )
GROUP BY Customers.sBarcode ,
        CAST(FLOOR(CAST(Tickets.dtCreated AS FLOAT)) AS DATETIME)
HAVING  ( COUNT(*) > 1 )

假设您有 dtCreated 字段的时间信息,cast/floor/cast 会删除它,然后您可以按日期分组并扩大日期范围。

于 2013-02-01T18:14:19.203 回答
0

尝试:

SELECT      Customers.sBarcode, 
            COUNT(Customers.sBarcode) AS [Number of Scans], 
            convert(char(10),Tickets.dtCreated,102)
FROM        Tickets 
INNER JOIN  Customers ON Tickets.lCustomerID = Customers.lCustomerID
WHERE       Tickets.dtCreated >=CONVERT(DATETIME, '2012-12-11 00:00:00', 102) AND 
            Tickets.dtCreated < CONVERT(DATETIME, '2012-12-18 00:00:00', 102) AND 
            Tickets.dblTotal <= 0
GROUP BY    Customers.sBarcode, convert(char(10),Tickets.dtCreated,102)
HAVING      COUNT(*) > 1
于 2013-02-01T18:22:24.577 回答