T-SQL Я подключаю таблицу сервисов к таблице платежей. Я использую MAX, AVG для платежей_rec'd и allowed_ amount. Мне нужно Баланс по последнему номеру строки за услугу из таблицы PayApp. Иногда платежи перечисляются, а затем вычитаются, поэтому баланс MIN не работает. Я думаю о inline select, но не могу использовать встроенную функцию inline.Использование агрегатной функции в операторе выбора строки
SELECT DISTINCT [CDCLSVC].[RECNUM]
,[CDCLSVC].[ID]
,[CDCLSVC].[CLIENT_ID]
,[CDCLIENT].[CASE_NUM]
,[CDCLSVC].[UNIT_ID]
,[CDCLSVC].[SUB_UNIT_ID]
,[CDCLSVC].[SVC_ID]
,[CDCLSVC].[EMP_ID]
,[CDCLSVC].[BEG_DATE]
,UPPER([CAEMP].[SORT_NAME]) as Employee
,ISNULL([CDCLSVC].[EXTENDED_PRICE],0) As ExtendedPrice
,ISNULL([CDCLSVC].[BALANCE],0) As Balance
,ISNULL(MAX([CDPAYAPP].[ALLOWED_AMT]),0) AS AllowedAmount
,ISNULL(MAX([CDPAYAPP].[ADJ_AMT]),0)As AdjustedAmount
,ISNULL(SUM([CDPAYAPP].[PAY_APPLIED_AMT]),0)As PaymentApplied
,ISNULL(MAX([CDPAYAPP].[WRITE_OFF_AMT]),0)AS WriteOff
,ISNULL(MIN([CDPAYAPP].[SVC_BALANCE]),0) AS SvcBalance
,UPPER([CDPLACE].[DESC]) as Location
FROM [AnaDEV].[dbo].[CDCLSVC]
INNER JOIN [CAEMP] ON [CDCLSVC].[EMP_ID] = [CAEMP].[ID]
INNER JOIN [CDCLIENT] ON [CDCLSVC].[CLIENT_ID] = [CDCLIENT].[ID]
INNER JOIN [CDPLACE] ON [CDCLSVC].[PLACE_ID] = [CDPLACE].[ID]
INNER JOIN [CDPAYAPP] ON [CDPAYAPP].[CLSVC_ID] = [CDCLSVC].[ID]
WHERE [CDCLSVC].[BEG_DATE] between '2015-07-01' and DATEADD(DAY,-
(DATEPART(DAY, getdate())),GETDATE())
GROUP BY CDCLSVC.RECNUM,CDCLSVC.ID,CDCLSVC.CLIENT_ID,
CDCLIENT.CASE_NUM,CDCLSVC.UNIT_ID, CDCLSVC.SUB_UNIT_ID,
CDCLSVC.SVC_ID,CDCLSVC.EMP_ID, CDCLSVC.BEG_DATE, CAEMP.SORT_NAME,
CDCLSVC.EXTENDED_PRICE,CDCLSVC.BALANCE, [CDPLACE].[DESC]
ORDER BY [CDCLIENT].[CASE_NUM], [CDCLSVC].[ID]
Почему 'SELECT DISTINCT' когда' GROUP BY'? – jarlh
Используемые теги dbms. Несколько конструкций, не связанных с ANSI SQL ... – jarlh
@sagi, только что заметили ... Уже отредактированы. – jarlh