我有表風險和歷史表風險歷史。 在風險表,我有數據象下面這樣:如何在sql server中收集數據到單行
-----------------------------
| ID | DealID | Description |
-----------------------------
| 1 | 14 | Risk1 |
-----------------------------
| 2 | 14 | Risk2 |
-----------------------------
| 3 | 14 | Risk3 |
-----------------------------
| 4 | 15 | Risk4 |
-----------------------------
所以這裏我們可以看到,一個交易可以有一些風險。我需要保存表的數據在歷史風險象下面這樣:
-------------------------------------
| 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,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, Risk2 |
-------------------------------------
- When I change Risk3:
-------------------------------------
| ID | dealID | AllDescriptions |
-------------------------------------
| 1 | 14 | Risk3, Risk3, Risk3 |
-------------------------------------
但我需要寫出所有風險,無論風險如何變化
集團通過再使用的東西或子 –
我試過了。但不能 –
結帳我的回答 –