Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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查询组合成一个查询_Sql_Combiners - Fatal编程技术网

如何将两个SQL查询组合成一个查询

如何将两个SQL查询组合成一个查询,sql,combiners,Sql,Combiners,我有一张如下图所示的桌子: 问题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年-月-日 问题2: Select MAX(SaleEndDate) as MaxSaleDate from Sales

我有一张如下图所示的桌子: 问题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年-月-日

问题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年-月-日

我想用一个查询显示两个结果。
请帮帮我!谢谢大家

只需将这两个选项都放在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)

只需将这两个选项都放在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)

如果需要在一行中同时显示两个结果:

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)
)

如果需要在一行中同时显示两个结果:

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)
)

对于您的特定情况,您可以使用交叉连接来获得结果

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;

对于您的特定情况,您可以使用交叉连接来获得结果

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;

选择最大值、最小值…?返回空值。where子句是difference,我得到的结果是2个差异记录的2个结果:您需要两个结果在一行中还是在不同的行中?我希望两个结果在一行中。选择max,min…?返回NULL。2 where子句是差异,而我得到的2个结果是2个差异记录的2个结果:您需要两个结果在一行中还是在不同的行中?我希望两个结果都在一行中。我的“where”子句是差异my“where”子句是差异case expression查询是最好的方法!case表达式查询就是最好的选择!非常感谢。这很容易非常感谢。这很容易