如何将两个SQL查询组合成一个查询
我有一张如下图所示的桌子: 问题1:如何将两个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
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表达式查询就是最好的选择!非常感谢。这很容易非常感谢。这很容易