powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / вывод макс имин значений в зависимости от кол-ва записей по объекту
6 сообщений из 6, страница 1 из 1
вывод макс имин значений в зависимости от кол-ва записей по объекту
    #39862560
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос выбирает максимальное минимальное и среднее значение по объекту(подзапрос с union). Но если значение 1 у объекта - выбирает его как максимальное и минимальное. Как сделать чтобы в случае если у объекта одно значение - выводило не макс и мин значение а только макс 1 раз

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
select	DISTINCT 
	COND.CT_CONTRACT_ID,
	COND.CONTRACT_NUM,
	COND.CONTRACT_DTM,
	coalesce( CUR.CURRENCY_ID,3),
	LNK.DIVISION_ID,
	case when MULT.CT_CONTRACT_ID is null then -1 else lnk.CNTR_KIS_ID end,
	V_RENT_MM.ACCOUNT_ID,
	LNK.BEGIN_DTM,
	LNK.END_DTM,
	V_RENT_MM.RENT_SUM_MAX,
	LNK.RENT_AREA,
	LNK.PAYMENT_FREQUENCY,
	STATUS.CONTRACT_DTM_FINISH,
	#HYP.SESSION_N 
from	((((DEV_DB_ODI.T_RENT_CONTRACT_COND_SNST    COND INNER JOIN DEV_DB_ODI.T_RENT_OBJECT_LNK_SNST    LNK ON COND.RENT_CONTRACT_COND_ID=LNK.RENT_CONTRACT_COND_ID and 
cond.IS_VERIFIED = 1 and 
cond.DELETION_MARK = 0) LEFT OUTER JOIN DEV_DB_ODI.T_RENT_MULTIMEMB_CT_SNST    MULT ON COND.CT_CONTRACT_ID=MULT.CT_CONTRACT_ID) LEFT OUTER JOIN (

select 	
	RENT_CT_STATUS_LNK_SNST.CT_CONTRACT_ID    CT_CONTRACT_ID,	min(RENT_CT_STATUS_LNK_SNST.CONTRACT_DTM)    CONTRACT_DTM_FINISH 
from	DEV_DB_ODI.T_RENT_CT_STATUS_LNK_SNST   RENT_CT_STATUS_LNK_SNST
where	(1=1)

And (RENT_CT_STATUS_LNK_SNST.IS_ACTUAL in ('Расторгнут','ОкончившийСрокДействия'))
Group By RENT_CT_STATUS_LNK_SNST.CT_CONTRACT_ID

)    STATUS ON COND.CT_CONTRACT_ID=STATUS.CT_CONTRACT_ID) LEFT OUTER JOIN DEV_DB_ODI.T_RENT_ADDITIONAL_INFO_LNK_SNST    INF ON COND.RENT_CONTRACT_COND_ID=INF.RENT_CONTRACT_COND_ID) LEFT OUTER JOIN DEV_DB_ODI.T_CURRENCY_SNST    CUR ON coalesce(LNK.CURRENCY_ID,3) = CUR.CURRENCY_ID, (

select 	
	V_R.DIVISION_ID    DIVISION_ID,	max(coalesce(NULLIF(V_R.RENT_SUM, 0),NULLIF(V_R.RENT_SUM_MAX, 0),NULLIF(V_R.RENT_SUM_MIN, 0)))    RENT_SUM_MAX,	3402986    ACCOUNT_ID,	V_R.CNTR_KIS_ID    CNTR_KIS_ID,	V_R.RENT_CONTRACT_COND_ID    RENT_CONTRACT_COND_ID
from	DEV_DB_ODI.T_RENT_TURNOVER_FEE_SNST   V_R, DEV_DB_HYP.V_MONTHS   V_MONTHS
where	(1=1)

And (V_MONTHS.MONTH_ID between #HYP.BEGIN_MONTH and #HYP.END_MONTH)
 And (V_MONTHS.MONTH_ID between to_month_id(cast(V_R.BEGIN_DTM as date)) and to_month_id(cast(V_R.END_DTM as date)))
 And (V_R.CALC_TYPE='ФиксированнаяСумма')
Group By V_R.DIVISION_ID,
 V_R.CNTR_KIS_ID,
 V_R.RENT_CONTRACT_COND_ID


UNION
select 	
	V_R.DIVISION_ID    DIVISION_ID,	min(coalesce(NULLIF(V_R.RENT_SUM, 0),NULLIF(V_R.RENT_SUM_MAX, 0),NULLIF(V_R.RENT_SUM_MIN, 0)))    RENT_SUM_MAX,	3402985    ACCOUNT_ID,	V_R.CNTR_KIS_ID    CNTR_KIS_ID,	V_R.RENT_CONTRACT_COND_ID    RENT_CONTRACT_COND_ID
from	DEV_DB_ODI.T_RENT_TURNOVER_FEE_SNST   V_R, DEV_DB_HYP.V_MONTHS   V_MONTHS
where	(1=1)

And (V_MONTHS.MONTH_ID between #HYP.BEGIN_MONTH and #HYP.END_MONTH)
 And (V_MONTHS.MONTH_ID between to_month_id(cast(V_R.BEGIN_DTM as date)) and to_month_id(cast(V_R.END_DTM as date)))
 And (V_R.CALC_TYPE='ФиксированнаяСумма')
Group By V_R.DIVISION_ID,
 V_R.CNTR_KIS_ID,
 V_R.RENT_CONTRACT_COND_ID


UNION
select 	
	V_R.DIVISION_ID    DIVISION_ID,	avg(coalesce(NULLIF(V_R.RENT_SUM, 0),NULLIF(V_R.RENT_SUM_MAX, 0),NULLIF(V_R.RENT_SUM_MIN, 0)))    RENT_SUM_MAX,	3402982    ACCOUNT_ID,	V_R.CNTR_KIS_ID    CNTR_KIS_ID,	V_R.RENT_CONTRACT_COND_ID    RENT_CONTRACT_COND_ID
from	DEV_DB_ODI.T_RENT_TURNOVER_FEE_SNST   V_R, DEV_DB_HYP.V_MONTHS   V_MONTHS
where	(1=1)

And (V_R.CALC_TYPE='Процент')
 And (V_MONTHS.MONTH_ID between #HYP.BEGIN_MONTH and #HYP.END_MONTH)
 And (V_MONTHS.MONTH_ID between to_month_id(cast(V_R.BEGIN_DTM as date)) and to_month_id(cast(V_R.END_DTM as date)))
Group By V_R.DIVISION_ID,
 V_R.CNTR_KIS_ID,
 V_R.RENT_CONTRACT_COND_ID

)   V_RENT_MM 
where	(1=1)
 And (COND.RENT_CONTRACT_COND_ID=V_RENT_MM.RENT_CONTRACT_COND_ID)
...
Рейтинг: 0 / 0
вывод макс имин значений в зависимости от кол-ва записей по объекту
    #39862563
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно ж, Ватсон.
Написать в where (если одно, то не выводить).
...
Рейтинг: 0 / 0
вывод макс имин значений в зависимости от кол-ва записей по объекту
    #39862564
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

что то не понятно как. К примеру вот в этом случае должно выводится только одно значение с account_id= 3402986
...
Рейтинг: 0 / 0
вывод макс имин значений в зависимости от кол-ва записей по объекту
    #39862567
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Romanov-krd,

но если значения в поле rent_sum_max разные то оба значения
...
Рейтинг: 0 / 0
вывод макс имин значений в зависимости от кол-ва записей по объекту
    #39862574
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В той половинке UNION, где выбирается минимальное, дополнительно написать HAVING COUNT(что-то)>1
...
Рейтинг: 0 / 0
вывод макс имин значений в зависимости от кол-ва записей по объекту
    #39862584
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

С having не получиться там 2 join таблицы и переменные задаются #HYP.BEGIN_MONTH and #HYP.END_MONTH
т.е. они могут быть заданы 201901-201912 к примеру и выборка будет 12 записей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 	
	V_R.DIVISION_ID    DIVISION_ID,	max(coalesce(NULLIF(V_R.RENT_SUM, 0),NULLIF(V_R.RENT_SUM_MAX, 0),NULLIF(V_R.RENT_SUM_MIN, 0)))    RENT_SUM_MAX,	3402986    ACCOUNT_ID,	V_R.CNTR_KIS_ID    CNTR_KIS_ID,	V_R.RENT_CONTRACT_COND_ID    RENT_CONTRACT_COND_ID
from	DEV_DB_ODI.T_RENT_TURNOVER_FEE_SNST   V_R, DEV_DB_HYP.V_MONTHS   V_MONTHS
where	(1=1)

And (V_MONTHS.MONTH_ID between #HYP.BEGIN_MONTH and #HYP.END_MONTH)
 And (V_MONTHS.MONTH_ID between to_month_id(cast(V_R.BEGIN_DTM as date)) and to_month_id(cast(V_R.END_DTM as date)))
 And (V_R.CALC_TYPE='ФиксированнаяСумма')
Group By V_R.DIVISION_ID,
 V_R.CNTR_KIS_ID,
 V_R.RENT_CONTRACT_COND_ID
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / вывод макс имин значений в зависимости от кол-ва записей по объекту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]