sql - 如何将行聚合到一个月
问题描述
我正在尝试合并从另一个表中选择的数据。
该表有一个名为的列IdClient_PK
,它是一个唯一ID,一个列DateJoinKey
是该用户查看页面的日期。
我想将所有内容DateJoinKey
合并为一个月。例如:
IDClient_PK | 日期加入键 | 意见 |
---|---|---|
0E984725-C51C-4BF4-9960-E1C80E27ABA0 | 01-1-2021 | 2 |
0E984725-C51C-4BF4-9960-E1C80E27ABA0 | 01-3-2021 | 1 |
0E984725-C51C-4BF4-9960-E1C80E27ABA0 | 01-14-2021 | 3 |
0E984725-C51C-4BF4-9960-E1C80E27ABA0 | 01-21-2021 | 1 |
我试图得到一个看起来像这样的结果:
IDClient_PK | 日期加入键 | 意见 |
---|---|---|
0E984725-C51C-4BF4-9960-E1C80E27ABA0 | 01-1-2021 | 7 |
我怎么能做到这一点?
我尝试FORMAT()
在 SQL 中使用该语句,但遇到错误:Conversion failed when converting date and/or time from character string.
这是我的查询示例:
CREATE TABLE #tmpModule2(
[IdClient_PK] uniqueidentifier,
[DateJoinKey] DATETIME,
[Views] INT
)
INSERT INTO #tmpModule ([IdClient_PK],[DateJoinKey], [Views] )
SELECT a.[IdClient_PK],
FORMAT(a.DateJoinKey, 'yyyy-MM'),
SUM(a.ViewValue)
FROM [usage].[Fact_RegisteredUsers_UserReport] a
GROUP BY
a.IdClient_PK,
FORMAT(a.DateJoinKey, 'yyyy-MM'),
解决方案
FORMAT()
返回一个NVARCHAR
数据类型,但您的临时表将该列作为DATETIME
. 您可以更改您CREATE
以使用正确的数据类型或SELECT INTO
如下所示。或者,您可以DATETIME
在插入临时表之前将上面的返回列转换为 a。
SELECT a.[IdClient_PK],
FORMAT(a.DateJoinKey, 'yyyy-MM') as [DateJoinKey],
SUM(a.ViewValue) AS [Views]
INTO #tmpModule
FROM [usage].[Fact_RegisteredUsers_UserReport] a
GROUP BY
a.IdClient_PK,
FORMAT(a.DateJoinKey, 'yyyy-MM')
推荐阅读
- reactjs - React+Redux 组件的 Jest spyOn 失败
- three.js - 为什么当我使用 png 纹理时,threejs pointshadermaterial 是矩形而不是圆形?
- javascript - 存储在回调函数外部范围内的对象中的值
- javascript - 如何重构此函数以将其认知复杂度从 17 降低到允许的 15
- android - [iOS][Android] AppStore 和发布:发布是否会因为 webview 而被拒绝?
- yubico - 如何将现有的 RSA 密钥导入 YubiHSM?
- python - python - 如何在不在python中导入任何内容的情况下获得数字的平方根?
- javascript - 将文本文件读入 Typescript 中的对象数组
- svg - FloMAT 库导出
- python - 返回函数在我的 python 模块中无法正常工作