【问题标题】:Creating a unique identifier if a specific condition is met in Select-Query如果在 Select-Query 中满足特定条件,则创建唯一标识符
【发布时间】:2021-07-07 20:07:53
【问题描述】:

我今天写的查询有问题。这是我的查询:

SELECT DISTINCT             
    t1.ID,
    t1.description,
    t1.plz,
    t1.street
FROM 
    Customer AS t1
JOIN 
    Customer ON t1.PLZ = Customer.PLZ
             AND t1.street= Customer.street
             AND t1.ID <> Customer.ID
ORDER BY 
    t1.plz, t1.street

我希望我的结果对于 t1.Strasse 和 t1.PLZ 与其他数据记录中的所有值具有唯一标识符。

像这样:

Identifier ID description plz street
001 1 Grocery 00001 Main Street 1
001 4 Juice Maker 00001 Main Street 1
001 5 Bakery 00001 Main Street 1
002 6 Bakery 00001 NotMain Street 2
003 10 Grocery 00001 Beacon Street 101
003 11 Juice Maker 00001 Beacon Street 101

我的主要问题是我不知道如何创建这个标识符以及如何增加它。

谢谢你帮助我。

【问题讨论】:

  • 试试row_number()
  • “唯一标识符”是什么意思?uniqueidentifier?如果是这样,您可以使用NEWID(),但是,增加uniqueidentifier 没有任何意义。
  • 不,我不是这个意思。我什至不知道 uniqueidentifier。我不知道我想要的东西的确切术语,这就是为什么我试图在表格中形象化这个概念。也许组标识符是一个更好的词。

标签: sql sql-server select


【解决方案1】:

您可以使用dense_rank() 进行枚举。另外,我认为您不需要自我加入:

SELECT c.ID, c.description, c.plz, c.street
       DENSE_RANK() OVER (ORDER BY t1.street, t1.plz)
FROM (SELECT c.*,
             COUNT(*) OVER (PARTITION BY street, plz) as cntCustomer c 
      FROM Customer c2
     ) c
WHERE cnt > 1
ORDER BY t1.plz, t1.street

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 2021-07-04
    • 2021-05-10
    • 2021-07-26
    • 2020-06-27
    • 2017-04-30
    • 2023-03-13
    • 2017-10-23
    相关资源
    最近更新 更多