Sql 如何使用UNION操作符合并一周中的几天?

Sql 如何使用UNION操作符合并一周中的几天?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我将此方法与方法结合使用,以便可以组合两个SELECT语句 问题是,当我使用UNION连接结果时,它会复制天数并合并时间列。我需要另一种方式。。。。例如:我尝试选择所有星期一的结果,这些结果等于14:00,然后选择另一组结果,这些结果等于16:00,并且这两个结果显示在彼此相邻的单独列中 下面是这个SQL查询的一个示例,说明了当前的情况 USE Trading; GO WITH ctetwo (CTEday, CTEtime) AS ( SELECT DATENAME(WEE

我将此方法与方法结合使用,以便可以组合两个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
白天时间

星期五15

星期五17

星期一13

星期一19

星期四15

18日星期四

星期二16

星期二16

星期三18


18号星期三

你不能用单选键吗

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],Two

旁白:
(@@DateFirst+DatePart(weekday,SampleDate)-1)%7+1
将始终返回一个从
1
7
的整数,其中
1
对应于周日,而不管
DateFirst
Language
的设置如何。谢谢您的回复。我想看到两个独立的列挨着彼此。当我选择“14:00”时,它应该返回一列值,“18:00”应该返回一个单独的列。我需要把这些列并排比较一下。