sql - 客户维度
问题描述
我正在编写一个 SQL 代码来创建一个客户维度。
ID Name File Import Date
1 XXX 12/30/2018
1 XXX 12/31/2018
1 XXX 1/1/2019
1 YYY 2/2/2019
1 YYY 3/2/2019
1 YYY 4/2/2019
2 AAA 1/1/2019
我想创建一个查询,我可以在其中捕获不同的名称以及历史记录
新表
ID Name Active
1 XXX 0
1 YYY 1
2 AAA 1
下面的查询给我最新的记录
SELECT Distinct a.[ID] as CustID
,a.[Name] as CustName
FROM X as a
inner join
(select ID,[MaxDate] = MAX(FileImportDate) from X group by ID ) b
on a.ID = b.ID
and a.FileImportDate = b.MaxDate`
在此处输入代码`
解决方案
我会咬...
根据评论,这是一个猜测
例子
Select Top 1 with ties
ID
,Name
,Active = case when [FileImportDate] = max([FileImportDate]) over (Partition By ID) then 1 else 0 end
From YourTable
Order By Row_Number() over (Partition By Name Order by [FileImportDate] Desc)
退货
ID Name Active
2 AAA 1
1 XXX 0
1 YYY 1
这是一个dbFiddle
推荐阅读
- node.js - 如何使用 Youtube API v3 运行搜索列表?
- angular - Angular 材料表列的虚拟滚动
- javascript - 如何让我的 X 按钮删除数组中的特定对象?
- javascript - 反应位置返回未定义
- sql-server - Mac 上 docker 容器中的 MSSql:无法连接到数据库
- powershell - PowerShell Invoke-webrequest 中的等效 curl -F
- c++ - 如何将具有 `next()` 方法的类似迭代器转换为常规的 `begin`/`end` 迭代器对?
- angular - 从base64解码得到文件名
- javascript - Passing Puppeteer log result into contenteditable field (non-input)?
- javascript - 从数据层变量对象捕获数据