Мне нужен кто-то, чтобы дать мне представление о том, как расположить эти строки.
Я хочу, чтобы строки следовали этому шаблону:
- TRNS
- SPL
- ENDTRNS
Это то, что у меня есть
+-------+------------+----------+------------+--------+
| Id | Trans Type | Document | Date | Amount |
+-------+------------+----------+------------+--------+
| 14184 | ENDTRNS | NULL | NULL | NULL |
| 14184 | ENDTRNS | NULL | NULL | NULL |
| 14184 | ENDTRNS | NULL | NULL | NULL |
| 14184 | ENDTRNS | NULL | NULL | NULL |
| 14184 | SPL | INVOICE | 01/07/1990 | -745 |
| 14184 | SPL | INVOICE | 01/07/1990 | -800 |
| 14184 | SPL | INVOICE | 01/07/1990 | -860 |
| 14184 | SPL | INVOICE | 01/07/1990 | -1170 |
| 14184 | TRNS | INVOICE | 01/07/1990 | 745 |
| 14184 | TRNS | INVOICE | 01/07/1990 | 800 |
| 14184 | TRNS | INVOICE | 01/07/1990 | 860 |
| 14184 | TRNS | INVOICE | 01/07/1990 | 1170 |
+-------+------------+----------+------------+--------+
Я пытаюсь получить следующее как конечный результат
+-------+------------+----------+------------+--------+
| Id | Trans Type | Document | Date | Amount |
+-------+------------+----------+------------+--------+
| 14184 | TRNS | INVOICE | 01/07/1990 | 1170 |
| 14184 | SPL | INVOICE | 01/07/1990 | -1170 |
| 14184 | ENDTRNS | NULL | NULL | NULL |
| 14184 | TRNS | INVOICE | 01/07/1990 | 860 |
| 14184 | SPL | INVOICE | 01/07/1990 | -860 |
| 14184 | ENDTRNS | NULL | NULL | NULL |
| 14184 | TRNS | INVOICE | 01/07/1990 | 800 |
| 14184 | SPL | INVOICE | 01/07/1990 | -800 |
| 14184 | ENDTRNS | NULL | NULL | NULL |
| 14184 | TRNS | INVOICE | 01/07/1990 | 745 |
| 14184 | SPL | INVOICE | 01/07/1990 | -745 |
| 14184 | ENDTRNS | NULL | NULL | NULL |
+-------+------------+----------+------------+--------+
Я думаю, что близко, это то, над чем я работаю
;WITH CTE_Sample AS
(
SELECT
'14184' AS [Id],
'ENDTRNS' AS [Trans Type],
'NULL' AS [Document],
'NULL' AS [Date],
'NULL' AS [Amount]
UNION ALL
SELECT
'14184' AS [Id],
'ENDTRNS' AS [Trans Type],
'NULL' AS [Document],
'NULL' AS [Date],
'NULL' AS [Amount]
UNION ALL
SELECT
'14184' AS [Id],
'ENDTRNS' AS [Trans Type],
'NULL' AS [Document],
'NULL' AS [Date],
'NULL' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'ENDTRNS' AS [Trans Type],'NULL' AS [Document],'NULL' AS [Date],'NULL' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'SPL' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'-745' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'SPL' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'-800' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'SPL' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'-860' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'SPL' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'-1170' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'TRNS' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'745' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'TRNS' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'800' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'TRNS' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'860' AS [Amount]
UNION ALL
SELECT '14184' AS [Id],'TRNS' AS [Trans Type],'INVOICE' AS [Document],'01/07/1990' AS [Date],'1170' AS [Amount]
)
SELECT
ID, [Trans Type], Document, [Date], Amount,
ROW_NUMBER() OVER (PARTITION BY ID, [Trans Type] ORDER BY Amount ASC) AS rownum
FROM
CTE_Sample
ORDER BY
ROWNUM
Я не могу понять, как получить ENDTRNS
в конце каждой группы строк сверху вниз