2016-07-22 7 views
0

Я начинаю с SQL, и я должен сделать сохраненный запрос в Informatica Cloud для подключения к базе данных SQL Server.Выберите случайное значение столбца между строками с тем же ID

У меня есть таблица, где строки с одинаковыми FormID имеют одни и те же столбцы, кроме «possibleSalesman», который представляет собой текстовый столбец:

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

Что мне нужно, чтобы получить одну строку для каждого идентификатора и выберите «возможный Salesman» случайным образом.

Например:

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

Я нашел такой подобный вопрос, но решение не помогло бы мне, потому что есть несколько ограничений в Informatica:

  • только ЗЕЬЕСТ
  • Невозможно использовать звездочку для выбора всех столбцов
  • Невозможно использовать функции преобразования
  • Ca не использовать Функция COUNT

Если бы кто-то мог мне помочь, я был бы очень признателен!

+0

Пожалуйста, объясните, почему у вас есть эти четыре ограничения. –

+0

Это ограничения в облаке Informatica для настройки сохраненного запроса. –

ответ

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.

+0

Спасибо! Это отлично работает в БД, но в Облаке Informatica я все еще получаю сообщение об ошибке: Неподдерживаемый запрос базы данных. В запросе допускаются только утверждения select. –

+1

, который является только выражением select ..... это более чем вероятно проблема с функциями ROW_NUMBER() и NEWID(), которые используются, но если это так, то это не передается на SQL-сервер и тег sql-сервера должен быть удален из вашего сообщения – Matt

 Смежные вопросы

  • Нет связанных вопросов^_^