回答

收藏

SQL按天分组(带计数)

技术问答 技术问答 415 人阅读 | 0 人回复 | 2023-09-14

我在SQL Server中有一个日志表,看起来像这样:
0 p; ?8 t# _; b/ P# J1 MCREATE TABLE [dbo].[RefundProcessLog](
- P: O4 h2 E, |3 `3 { [LogId] [bigint] IDENTITY(1,1) NOT NULL,4 \& e5 c& L6 |! }
[LogDate] [datetime] NOT NULL,
2 J" f  W3 j" V" R7 u5 c  { [LogType] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
4 J2 O( x7 T9 O& ?& O+ ] [RefundId] [int] NULL,
% B' q# S& D8 m [RefundTypeId] [smallint] NULL,+ l' ~4 M6 {$ k% o
[LogMessage] [varchar](1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
5 V/ [- s# x6 J- x2 G [LoggedBy] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
! c9 Z" z/ B; ]' `& R CONSTRAINT [PK_RefundProcessLog] PRIMARY KEY CLUSTERED
( K+ I! {% s% y1 X+ z* N( {6 I7 r(
8 g: E  s' N$ p2 G; E [LogId] ASC4 {" v- G' W( s6 I" X
) ON [PRIMARY]
1 e; Z2 X. T5 R1 `) ON [PRIMARY]0 @7 m" b" g, h! d
GO
" @' A& }# s/ @我想要的是一个结果列表,该列表表示每天处理了多少种不同的退款,并抛出了所有NULL。
6 t5 F! f0 A$ K: ?' W! f我需要编写什么SQL才能产生这些结果?5 H5 y+ E& ~& S- r/ D
                ' x1 u3 w( A3 n6 O6 E) z( w% {( d7 h
解决方案:
5 G# z0 `5 g8 d* {+ p8 ]# g: q               
0 @6 [( k- y4 ?( d. c% N
% v3 }& \) |$ o. V/ g" t9 N) k6 n' z3 B! |; Z* q
                我喜欢(MS SQL)中的这种方法:
- G4 z: o3 k0 {+ H% c% T% x+ T1 p7 YSELECT 5 ~0 R# C5 J* s, u; R
  Convert(char(8), LogDate, 112),' |2 k' d* |9 z; @% d, ^; E+ G( ^
  count(distinct RefundId)0 ?" c% J' b  d* X1 L
FROM RefundProcessing
4 C9 M5 s. ]% i8 T9 HGROUP BY Convert(char(8), LogDate, 112)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则