如何解决如何在SQL Server中将数据收集到单行
请尝试这个。
SELECT disTINCT
DealID
, STUFF((
SELECT N', ' + CAST([Description] AS VARCHAR(4000))
FROM Risks R2
WHERE R1.DealID = R2.DealID
FOR XML PATH (''), TYPE), 1, 2, '') AS AllDescriptions
FROM Risks R1
GROUP BY DealID
修改后的触发器并假设DealID和Description是Risks表的列名称,
DECLARE @DealID INT;
SELECT
@DealID = [DealID]
FROM inserted;
INSERT INTO [dbo].[Risks_history]
(
DealID,
[AllDescription]
)
SELECT
[DealID],
STUFF((
SELECT ', ' + R2.[Description]
FROM Risks R2
WHERE R1.DealID = R2.DealID
FOR XML PATH (''), TYPE), 1, 2, '') AS AllDescriptions
FROM Risks R1
WHERE DealID = @DealID
GROUP BY DealID
解决方法
我有 风险 表和历史记录表 Risks_history 。在“风险”表中,我有如下数据:
-----------------------------
| ID | DealID | Description |
-----------------------------
| 1 | 14 | Risk1 |
-----------------------------
| 2 | 14 | Risk2 |
-----------------------------
| 3 | 14 | Risk3 |
-----------------------------
| 4 | 15 | Risk4 |
-----------------------------
因此,我们可以看到一笔交易可以有多个风险。我需要在历史记录中保存表 Risks的 数据,如下所示:
-------------------------------------
| ID | dealID | AllDescriptions |
-------------------------------------
| 1 | 14 | Risk1,Risk2,Risk3 |
-------------------------------------
| 2 | 15 | Risk4 |
-------------------------------------
我需要触发器来做到这一点。但是现在我不能。
如何将数据从多行收集到一行?
编辑:
我需要触发器,所以现在我有以下触发器:
INSERT INTO [dbo].[Risks_history]
(
DealID,[AllDescription]
)
SELECT
[DealID],stuff((select ',' + i.name from inserted i
where i.DealID= i2.DealID
FOR XML PATH('')),1,'') as Description
FROM inserted i2;
但是在 Risks_history 表中,我有如下数据(触发条件如下):
- When I change Risk1:
-------------------------------------
| ID | dealID | AllDescriptions |
-------------------------------------
| 1 | 14 | Risk1,Risk1,Risk1 |
-------------------------------------
- When I change Risk2:
-------------------------------------
| ID | dealID | AllDescriptions |
-------------------------------------
| 1 | 14 | Risk2,Risk2 |
-------------------------------------
- When I change Risk3:
-------------------------------------
| ID | dealID | AllDescriptions |
-------------------------------------
| 1 | 14 | Risk3,Risk3,Risk3 |
-------------------------------------
但是无论风险如何变化,我都需要写所有风险
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。