0

私は SQL の初心者であり、SQL Server データベースとの接続のために Informatica Cloud で保存されたクエリを実行する必要があります。

同じ formId を持つ行に、テキスト列である「possibleSalesman」以外の同じ列があるテーブルがあります。

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

私が必要としているのは、ID ごとに 1 つの行を取得し、「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()てランダムな順序を実現し、結果を選択できますROW_NUMBER() = 1

于 2016-07-22T19:13:21.450 に答える