繁体   English   中英

SQL数据查询 - 正确显示计数

[英]SQL data query - displaying count correctly

我有一个SQL数据库,其中包含使用某个软件的计算机和用户的日志数据。 我需要创建一个查询,我可以在某一天(今天)显示所有连接,并按年级分组。

WindowsLogs表:

Date
Time
Username
Year
AppV
IPaddress
MAC
DeviceName
Antivirus
5gigCompat

这是我得到的:

select WindowsLogs.Year,count(*)
From WindowsLogs
Where WindowsLogs.Date=cast(convert(varchar(10), getdate(), 105) as datetime)
group by WindowsLogs.Year

我目前得到这个:

Year | no name
   7 |  5
   8 |  2
  11 |  3

但理想情况下,我希望数据显示如下:

Year 07 | XX
Year 08 | XX
Year 09 | XX
Year 10 | XX
Year 11 | XX
Year 12 | XX

据推测,你似乎想要一个left join ,如下所示:

select v.str, count(wl.year)
from (values ('Year 07', 7),
             ('Year 08', 8),
             ('Year 09', 9),
             ('Year 10', 10),
             ('Year 11', 11),
             ('Year 12', 12)
     ) v(str, yr) left join
     WindowsLogs wl
     on wl.date = convert(date, getdate()) and
        wl.year = v.yr
group by v.str
order by v.str;

使用以下方法解决此问题:

SELECT (SELECT COUNT(*) AS NumberOfTransactions 
FROM WindowsLogs
WHERE WindowsLogs.Date=cast(convert(varchar(10), getdate(), 105) as datetime) 
and WindowsLogs.Year = 7) as Year7today;

并继续每年的水平

使用CONCATFORMAT

SELECT CONCAT("YEAR ", FORMAT(WindowsLogs.Year, "00")), FORMAT(COUNT(*), "00")
FROM WindowsLogs
WHERE WindowsLogs.Date=cast(convert(varchar(10), getdate(), 105) as datetime)
GROUP BY WindowsLogs.Year

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM