我是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有一些限制:
如果有人能帮助我,我将非常感激!
答案 0 :(得分: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()
来实现随机顺序,然后选择ROW_NUMBER() = 1
的结果。