istudent Ответов: 1

Как создать сводную таблицу и вставить ее в новую таблицу


Я был бы признателен, если бы кто-то мог помочь мне с запросом, который мне нужно выполнить, чтобы создать таблицу.
Это моя ситуация,

мои данные в таблице выглядят так

mailnumber, type,email
 1,        inbox, some inbox message..
 1,        sent, some sent message..
 2,        inbox,inbox message
 2,        sent, sent message



Чего я хочу добиться, так это того, что я хочу превратить эти данные в

mailnumber, inboxMessage,          SentMessage
 1,          some inbox message..,  some sent message..
 2,          inbox message..,        sent message...



и вставьте данные в новую таблицу

Что я уже пробовал:

Я пытался сделать это с SSIS eventhough я очень новичок в SSIS, но из-за длины данных он не позволил мне сделать это.

1 Ответов

Рейтинг:
7

Maciej Los

Начните с чтения документации:
Использование PIVOT и UNPIVOT - SQL Server | Microsoft Docs[^]
Вставка (Transact-SQL) - SQL Server | Microsoft Docs[^]
Когда застрянете, вернитесь сюда и задайте подробный вопрос.

[РЕДАКТИРОВАТЬ]
Вы можете достичь того же самого без использования PIVOT заявление:

SELECT mailnumber, MAX(CASE WHEN [type] = 'inbox' THEN email ELSE NULL END) As InboxMessage, MAX(CASE WHEN [type] = 'sent' THEN email ELSE NULL END) AS SentMessage
FROM YourTable
GROUP BY mailnumber;


[Правка #2]
Другой способ - использование Присоединяется[^]:
SELECT t1.mailnumber, t1.InboxMessage, t2.SentMessage
FROM (
SELECT mailnumber, email As InboxMessage
FROM YourTable
WHERE type = 'inbox'
) AS t1 INNER JOIN (
    SELECT mailnumber, email As SentMessage
    FROM YourTable
    WHERE type = 'sent'
) AS t2 ON t1.mailnumber = t2.mailnumber


istudent

В этом примере используются агрегатные функции. Я проверил это и прочитал другие блоги, а также прежде чем я опубликовал свою проблему.

Maciej Los

И...

istudent

В приведенной выше ситуации мне не нужно использовать какую-либо агрегатную функцию. Так Ли Это?

Maciej Los

Это зависит...
Единственный способ не использовать функции агрегации-это использовать объединения. Пожалуйста, проверьте обновленный ответ.