0

我的一个查询遇到了一点问题。我正在拼凑一个简单的图表来绘制按星期几提交的一些报告。

我开始的查询是:

  SELECT Weekday(incidentdate) AS dayOfWeek
, Count(*) AS NumberOfIncidents
   FROM Incident
    GROUP BY Weekday(incidentdate);

这工作正常并返回我想要的东西,比如

   1      200
   2     323
   3     32
   4     322
   5     272
   6     282
   7     190

问题是,我希望 weekday 函数返回的数字读取对应的星期几,case when 1 then 'sunday'等等。由于 Access 没有将它作为工作日单词返回的 SQL 服务器等效项,因此我必须解决。

问题是,它没有按照我想要的方式出现。所以我写了它,iif因为我不能使用CASE. 问题是,由于每个 iif 语句都被视为列选择(我编写它的方式),所以我的数据无法使用,就像这样

  SELECT 
 iif(weekday(incidentdate) =1,'Sunday'),
 iif(weekday(incidentdate) =2,'Monday')
 'so forth
, Count(*) AS NumberOfIncidents
  FROM tblIncident
   GROUP BY Weekday(incidentdate);



  Expr1000  Expr1001    count   

  Sunday              20
           Monday      106
                      120
                      186
                      182
                      164
                       24

当然,我希望我的工作日与原始查询在同一列中。哈尔普请

4

4 回答 4

4

使用 WeekdayName() 函数。

SELECT
    WeekdayName(Weekday(incidentdate)) AS dayOfWeek,
    Count(*) AS NumberOfIncidents
FROM Incident
GROUP BY WeekdayName(Weekday(incidentdate));
于 2013-07-17T20:10:46.317 回答
2

正如 BWS 建议的那样,Switch这就是我想要的。这是我最后写的

SELECT 
 switch(
 Weekday(incidentdate) = 1, 'Sunday',
 Weekday(incidentdate) = 2,'Monday',
 Weekday(incidentdate) = 3,'Tuesday',
 Weekday(incidentdate) = 4,'Wednesday',
 Weekday(incidentdate) = 5,'Thursday',
 Weekday(incidentdate) = 6,'Friday',
 Weekday(incidentdate) = 7,'Saturday'
 ) as DayOfWeek
 , Count(*) AS NumberOfIncidents
FROM tblIncident
GROUP BY Weekday(incidentdate);

在此处发布此内容,以便为未来的读者提供实际代码

编辑:WeekdayName(weekday(yourdate))正如 HansUp 所说,这可能更容易:)

于 2013-07-17T20:12:21.557 回答
1

检查这个以前的帖子:

Access SQL 中 Select Case 的等价物是什么?

于 2013-07-17T20:06:10.897 回答
0

为什么不创建一个包含日期编号和日期名称的 7 行表,然后加入它呢?

于 2013-07-17T20:11:03.290 回答