Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 Server:限制数据范围_Sql Server_Tsql_Date - Fatal编程技术网

Sql server SQL Server:限制数据范围

Sql server SQL Server:限制数据范围,sql-server,tsql,date,Sql Server,Tsql,Date,下面的查询应该显示两种产品的详细信息:DIS001和DIS002 如果是DIS002,则应“重置”查询,以便仅显示在DIS002售出日期之后售出的DIS001产品 老实说,我甚至不确定这是否可能。如有任何建议,我将不胜感激 SELECT DISTINCT Sales.RaisedDateTime AS [Date], Contacts.ContactID AS [Contact ID], Contacts.SiteID AS [Site ID], Sales.P

下面的查询应该显示两种产品的详细信息:DIS001和DIS002

如果是DIS002,则应“重置”查询,以便仅显示在DIS002售出日期之后售出的DIS001产品

老实说,我甚至不确定这是否可能。如有任何建议,我将不胜感激

SELECT DISTINCT 
    Sales.RaisedDateTime AS [Date],
    Contacts.ContactID AS [Contact ID],
    Contacts.SiteID AS [Site ID],
    Sales.ProductID AS [Product],
    CASE 
       WHEN Sales.ProductID = 'DIS002' 
          THEN Sales.RaisedDate 
          ELSE CONVERT(DATETIME, CONVERT(VARCHAR(10), '2019-10-28', 101) + ' 00:00:00') 
    END AS [Start Date] 
FROM 
    ((Bookings.Bookings Bookings
INNER JOIN 
    Contacts.Contacts Contacts ON (Bookings.ContactID = Contacts.ContactID))
INNER JOIN 
    Sales.Sales Sales ON (Bookings.ContactID = Sales.ContactID))
WHERE
    (Sales.ProductID = 'DIS001' AND 
     Sales.RaisedDate >= MAX([Start Date])

有很多不同的语法可以解决这个问题,但这里有一个:

;with DIS002 as (
    select ContactID, max(RaisedDate) as DIS002Date 
    from Sales.Sales 
    where ProductID = 'DIS002'
    group by ContactID
)
SELECT DISTINCT 
    Sales.RaisedDateTime AS [Date],
    Contacts.ContactID AS [Contact ID],
    Contacts.SiteID AS [Site ID],
    Sales.ProductID AS [Product]
FROM 
    ((Bookings.Bookings Bookings
INNER JOIN 
    Contacts.Contacts Contacts ON (Bookings.ContactID = Contacts.ContactID))
INNER JOIN 
    Sales.Sales Sales ON (Bookings.ContactID = Sales.ContactID))
LEFT JOIN 
    DIS002 on DIS002.ContactID = Sales.ContactID
WHERE
    Sales.ProductID = 'DIS001' AND 
    Sales.RaisedDate >= isnull(DIS002date,'1900-01-01')

样本数据和预期结果将有助于更好地理解您的问题。