1

我有一张如下图所示的表格: 在此处输入图像描述 查询 1:

Select  MIN(SaleStartDate) as MinSaleDate 
from Sales 
where LessonID=1 and (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleStartDate) > 0)

结果:2017-02-10 (yyyy-MM-dd)

查询 2:

Select  MAX(SaleEndDate) as MaxSaleDate
from Sales 
where LessonID=1 and  (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleEndDate) < 0)

结果:2017-01-02 (yyyy-MM-dd)

我想用 1 个查询显示 2 个结果。请帮我!感谢每一个人!

4

3 回答 3

2

只需将两者都放在 select 上,如下所示:

Select  MIN(SaleStartDate) as MinSaleDate, 
        MAX(SaleEndDate) as MaxSaleDate
    from Sales 
where LessonID=1 and (DATEDIFF(day, 
                               CONVERT (char(10), 
                                        GETDATE(), 
                                        126),
                               Sales.SaleStartDate) > 0)
于 2017-01-12T08:08:04.133 回答
1

如果您需要将两个结果放在一行中:

Select  
(
Select  MIN(SaleStartDate) as MinSaleDate 
from Sales 
where LessonID=1 
and (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleStartDate) > 0)
),
(
Select  MAX(SaleEndDate) as MaxSaleDate
from Sales 
where LessonID=1 
and  (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleEndDate) < 0)
)

如果您需要不同行中的结果,请使用 UNION:

Select  
(
Select  MIN(SaleStartDate) as MinSaleDate 
from Sales 
where LessonID=1 
and (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleStartDate) > 0)
) UNION
(
Select  MAX(SaleEndDate) as MaxSaleDate
from Sales 
where LessonID=1 
and  (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleEndDate) < 0)
)
于 2017-01-12T08:14:22.867 回答
1

对于您的具体情况,您可以只使用 aCROSS JOIN来获得您的结果

SELECT MinSaleDate, MaxSaleDate
FROM
(
    Select  MIN(SaleStartDate) as MinSaleDate 
    from Sales 
    where LessonID = 1 and (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleStartDate) > 0)
),
(
    Select  MAX(SaleEndDate) as MaxSaleDate
    from Sales 
    where LessonID = 1 and  (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleEndDate) < 0)
);

对于一般情况,您可以使用:

SELECT 
    MIN(CASE WHEN (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleStartDate) > 0
            THEN SaleStartDate END) AS MinSaleDate,
    MAX(CASE WHEN (DATEDIFF(day, CONVERT (char(10), GETDATE(), 126), Sales.SaleEndDate) < 0
            THEN SaleEndDate END) AS MaxSaleDate
from Sales 
where LessonID = 1;
于 2017-01-12T08:14:29.973 回答