我遇到以下问题。
我需要填充的表(假设Activities
)具有3列(例如Act1, Act2, Act3
),我需要在该表中排列客户在该记录上进行的最后3个活动
我成功创建了一个查询,该查询以降序提取了前3个活动(这是两个不同表的并集,因为活动可以是电子邮件或通用注释):
SELECT TOP 3 Concat(subject, ' | ', content, ' | ', creation) AS ActivityContent
FROM (SELECT TOP 3 'Email' AS Tipo,
a.regardingobjectid AS Regarding,
a."subject" AS "Subject",
NULL AS "Content",
a.createdon AS creation
FROM mydb.dbo.activities a
WHERE a.activitytypecode = 4202
UNION
SELECT TOP 3 'Note' AS Tipo,
ann.objectid AS Regarding,
ann."subject" AS "Subject",
ann.notetext AS "Content",
ann.createdon AS creation
FROM mydb.dbo.notes ann) AS Act
ORDER BY creation DESC
这是我查询的结果:
我现在需要向Act1, Act2, Act3
列报告3行的结果ActivityContent(这些行总是3,如果没有完成活动,则可能更少)。
+-----------------------------------------------+-----------------------------------------------+----------------------------+--+
| Col1 | Col2 | Col3 | |
+-----------------------------------------------+-----------------------------------------------+----------------------------+--+
| 'Test Nota' | 'Test Descrizione' | Oct 30 ... | 'Test Nota' | 'Test Descrizione' | Oct 30 ... | d | | Oct 26 2018 9:23PM | |
+-----------------------------------------------+-----------------------------------------------+----------------------------+--+
我要说的是,我一般并不真正熟悉SQL过程,但是我迷失在网上找到的大量功能中:
据我了解,PIVOT可能是合适的功能之一,但是当您需要在列中进行汇总(计数,总和)时,似乎必须使用PIVOT,而这并不是我的要求。
我也检查了APPLY,CROSS APPLY等,但我真的不明白必须使用的内容以及如何实现它。
预先感谢您的提示。