回答

收藏

SQL按天分组(带计数)

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

我在SQL Server中有一个日志表,看起来像这样:
7 \8 C6 e. x3 [& ~) `. }CREATE TABLE [dbo].[RefundProcessLog](
( k: P2 Q$ W6 z: ]0 f [LogId] [bigint] IDENTITY(1,1) NOT NULL,
  ^5 w$ p. }& Q- ]# w  D [LogDate] [datetime] NOT NULL,
- o- e2 O1 Y) W$ Q% c' |- `4 ~ [LogType] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,; N/ x8 r) B8 g+ \# d
[RefundId] [int] NULL,
" ^* a' [! d* j% g [RefundTypeId] [smallint] NULL,% _+ E0 }: {7 H) t
[LogMessage] [varchar](1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,- i9 H2 c" B' B; M: j8 g
[LoggedBy] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,3 d+ Q; R& E" c& F4 ]  y
CONSTRAINT [PK_RefundProcessLog] PRIMARY KEY CLUSTERED
' _5 j/ v! t3 D$ z0 T6 C; y(# R$ b0 M. J5 {' s% J
[LogId] ASC* h8 B% h% `; Y
) ON [PRIMARY]7 L2 j! x9 u& i6 C: N9 S
) ON [PRIMARY], k8 F- T) W$ p; Y! }5 x
GO
3 R! v' a9 U- ?* T. I" g我想要的是一个结果列表,该列表表示每天处理了多少种不同的退款,并抛出了所有NULL。
( u: ~# [: I9 @0 i" `9 F5 V, a我需要编写什么SQL才能产生这些结果?
- N- q- W( h+ d' Z* Q5 y! T               
! p6 X6 G( R6 x' c解决方案:
+ u2 W- @% Z2 r               
: O( a& i2 a6 w& [1 }, m" c  g
) D3 j# M2 S- o: X2 c* C1 p# h, F! A  w9 w
                我喜欢(MS SQL)中的这种方法:
. F( H! W: z2 p3 x; S7 OSELECT
$ E% N& H9 _. m* r7 b  Convert(char(8), LogDate, 112),
( s/ {/ _6 N% T8 ~, ~$ b8 i! C  count(distinct RefundId)
( h8 U3 M- o9 ]& i& [' A( q4 FFROM RefundProcessing+ B  A; n' j1 E/ \$ D5 c" b
GROUP BY Convert(char(8), LogDate, 112)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则