0

我是 SQL 的初学者,我必须在 Informatica Cloud 中执行保存查询才能连接 SQL Server 数据库。

我有一个表,其中具有相同 formId 的行具有相同的列,除了“possibleSalesman”,这是一个文本列:

formId, email, possibleSalesman
1, email1, user1
1, email1, user2
1, email1, user4
2, email2, user2
3, email3, user3
3, email3, user1

我需要的是为每个 id 获取一行并随机选择“possibleSalesman”。

例如:

1, email1, user4
2, email2, user2
3, email3, user3

我发现了一个类似的问题,但该解决方案对我没有帮助,因为 Informatica 中有一些限制:

  • 仅 SELECT 语句
  • 不能使用星号选择所有列
  • 不能使用转换函数
  • 无法使用 COUNT 函数

如果有人可以帮助我,我将不胜感激!

4

1 回答 1

1
SELECT
    FormId
    ,Email
    ,possibleSalesMan
FROM
    (
    SELECT
      FormId
      ,Email
      ,possibleSalesMan
      ,ROW_NUMBER() OVER (PARTITION BY FormId ORDER BY NEWID()) AS RowNumber
    FROM
       TableName) t
WHERE
    t.RowNumber = 1

在 SQL Server 2008+ 中,您可以使用ROW_NUMBER()窗口函数并NEWID()实现随机顺序,然后选择结果 where ROW_NUMBER() = 1

于 2016-07-22T19:13:21.450 回答