我将这个与方法一起使用,这样我就可以组合两个SELECT语句。
问题是,当我使用UNION连接结果时,它复制了日期并组合了时间列。我需要的是另一种方式...例如:我正在尝试选择等于14:00的所有星期一的结果,然后选择等于16:00的另一组结果,并将这两个结果显示在彼此相邻的单独列中。
下面是这个SQL查询的示例。
USE Trading;
GO
WITH
ctetwo (CTEday, CTEtime) AS
(
SELECT DATENAME(WEEKDAY, M.[DateTime]) as Day,
COUNT(M.[High] - M.[Low]) as Two
FROM dbo.MicroES M
WHERE CONVERT(time, M.[DateTime]) = '14:00'
AND DATEPART(WEEKDAY,M.[Datetime]) BETWEEN 2 AND 6
GROUP BY DATENAME(WEEKDAY, M.[DateTime])
),
cteSix (CTEday, CTEtime) AS
(
SELECT DATENAME(WEEKDAY, M.[DateTime]) as Day,
COUNT(M.[High] - M.[Low]) as Two
FROM dbo.MicroES M
WHERE CONVERT(time, M.[DateTime]) = '18:00'
AND DATEPART(WEEKDAY,M.[Datetime]) BETWEEN 2 AND 6
GROUP BY DATENAME(WEEKDAY, M.[DateTime])
)
select
--'Monday' AS 'Day',
CTEday AS 'Day',
CTEtime as TimeFour
from ctetwo
UNION ALL
select
--'Tuesday' AS 'Day',
CTEday AS 'Day',
CTEtime as TimeSix
from cteSix
ORDER BY Day一天TimeFour
星期五15
星期五17
周一13
星期一19号
星期四15
星期四18
星期二16
星期二16
星期三18
星期三18
发布于 2019-12-26 08:21:38
你不能使用一次select来实现吗?
SELECT
DATENAME(WEEKDAY, M.[DateTime]) as [Day],
COUNT(M.[High] - M.[Low]) as Two
FROM dbo.MicroES M
WHERE CONVERT(time, M.[DateTime]) in ('14:00','18:00')
AND DATEPART(WEEKDAY,M.[Datetime]) BETWEEN 2 AND 6
GROUP BY DATENAME(WEEKDAY, M.[DateTime])
ORDER BY [Day],Twohttps://stackoverflow.com/questions/59481554
复制相似问题