如何在SQL中创建大量唯一/不同的ID [英] How do I create a lit of unique/distinct IDs in SQL

查看:0
本文介绍了如何在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(时间戳)

  1.   2021-07-05          2012-07-05
    
  2.   2021-07-05           2012-12-12
    
  3.    2021-07-12             2018-04-07
    
  4.    2021-07-19              2012-12-12
    

所需输出为

  1. 2021-07-05。2012-07-05
  2. 2021-07-05 2012-12-12
  3. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆