У меня есть таблица счетов-фактур, в которой я хотел бы отобразить записи, в которых имеется более 1 экземпляра [case_num], упорядоченный по убыванию usd_amt, но хранящий записи case_num вместе.
Первая запись должно быть самое высокое значение usd_amt, за которым следуют все записи с одинаковым case_num (отображается usd_amt DES C), следующая запись должна быть следующей по величине usd_amt, за которой следуют все записи с таким же case_num (отображается usd_amt DES C) и
пример таблицы:
CREATE TABLE [dbo].[Invoices](
[invoice_id] [int] NOT NULL,
[case_num] [varchar](255) NULL,
[usd_amt] [float] NULL,
PRIMARY KEY CLUSTERED
(
[invoice_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
пример данных:
INSERT INTO [dbo].[Invoices]
([invoice_id]
,[case_num]
,[usd_amt])
VALUES
(39341598, '1.83722e+009|o|126547', 79752.6621),
(40951156, '1.83722e+009|o|126547', 79194.0256),
(41809870, '1.83722e+009|o|126547', 79190.6121),
(42002432, '3090|o|19319', 3090.00),
(39540302, '3090|o|19319', 3090.00),
(41182508, '3090|o|19319', 120.00),
(42825471, '13959|o|8986', 130.95),
(42825546, '13959|o|8986', 130.95),
(42959088, '10274|o|8986', 96.64);
Желаемый результат:
invoice_id case_num usd_amt
39341598 1.83722e+009|o|126547 79752.6621
40951156 1.83722e+009|o|126547 79194.0256
41809870 1.83722e+009|o|126547 79190.6121
42002432 3090|o|19319 3090
39540302 3090|o|19319 3090
41182508 3090|o|19319 120
42825471 13959|o|8986 130.95
42825546 13959|o|8986 130.95
после прочтения некоторых других страниц SO Я думаю, что мне нужна некоторая комбинация использования ROW_NUMBER () для разбиения по case_num и присвоения порядкового номера или использования CTE, но я в данный момент застрял. Любые указатели в правильном направлении будут высоко оценены!