如何在SQL中创建大量唯一/不同的ID [英] How do I create a lit of unique/distinct IDs in SQL
本文介绍了如何在SQL中创建大量唯一/不同的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个有3列的SQL代码。(1)UUID(2)时间戳1(3)时间戳2。我正在尝试创建一个列表,其中包含唯一的UUID和第一个出现的时间戳1。我使用了DISTINCT函数,但它不起作用。谁能帮助理解什么是正确的代码。
谢谢
with raw_data as ( select UUID, cast(datestring as timetamp) as date1 date2 from XYZ )
Select distinct UUID, date1, date2
from raw_data
RAW_DATA
ID#日期1(字符串)#日期2(时间戳)
-
2021-07-05 2012-07-05
-
2021-07-05 2012-12-12
-
2021-07-12 2018-04-07
-
2021-07-19 2012-12-12
所需输出为
- 2021-07-05。2012-07-05
- 2021-07-05 2012-12-12
- 2021-07-12 2018-04-07
推荐答案
下表使用GROUP BY和MIN
获取timestamp1
的第一个匹配项。
SELECT
UUID,
MIN(timestamp1) as first_occurrence_of_timestamp_1
FROM
mytable
GROUP BY
UUID
编辑%1
为了响应您的时间戳转换,我在配置单元上运行了以下命令,得到了以下结果:
WITH XYZ AS (
SELECT 1 as UUID, '2021-07-05' as datestring, '2012-07-05' as date2
UNION ALL
SELECT 2, '2021-07-05', '2012-12-12'
UNION ALL
SELECT 3, '2021-07-12', '2018-04-07'
UNION ALL
SELECT 3, '2021-07-19', '2012-12-12'
),
raw_data AS (
SELECT
UUID,
CAST(datestring as TIMESTAMP) date1,
date2
FROM XYZ
)
SELECT
UUID,
MIN(date1) as first_occurrence_of_timestamp_1,
MIN(date2) as earliest_date_2
FROM
raw_data
GROUP BY
UUID
输出:
UUID | First_ocurence_of_Timestamp_1 | 最早日期_2 |
---|---|---|
1 | 2021-07-05 00:00:00.0 | 2012-07-05 |
2 | 2021-07-05 00:00:00.0 | 2012-12-12 |
3 | 2021-07-12 00:00:00.0 | 2012-12-12 |
让我知道这对您是否有效
这篇关于如何在SQL中创建大量唯一/不同的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文