powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помагите с запросом.
3 сообщений из 3, страница 1 из 1
Помагите с запросом.
    #39875432
DSRClient
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня уважаемые профи. Помогите с запросом.
Данная задача добавляет на личный счет клиента процент от его покупки.
Нужно добавить условие (если в таблице PrecheckItems содержится идентификатор FD8E6587-C694 то просто завершаем задачу без начислений. Помогите пожалуйста.


Код: 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.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
IF OBJECT_ID('tempdb..#ClientPercents') IS NOT NULL
  DROP TABLE #ClientPercents

/**********************************************
 *       Тип обновляемых счетов               *
 **********************************************/

DECLARE
  @ClientPurseType UNIQUEIDENTIFIER

SELECT TOP 1 @ClientPurseType = cptp_ID
FROM %ClientPurseTypes



/***********************************************************************
 *     Оплаченные пречеки из указанных подразделений в торговых днях,  *
 *  где дата закрытия попадает в диапазон просмотра                    *
 ***********************************************************************/

SELECT prch_ID 'prdate_prch_ID'--, chck_date = max(chck_date) 
INTO #PreChecksDate
FROM Prechecks
     JOIN Checks ON chck_prch_ID = prch_ID
WHERE prch_pcst_ID = 1
and chck_date >=  (select (GETDATE()-30))
and chck_date > '19.08.2019 23:59:00'
GROUP BY prch_ID

SELECT gest_id, clnt_ID,  sum(pcit_Price * pcit_Count) 'Pcit_Sum', prch_dvsn_id
INTO #PreChecksInDivisions
FROM PreChecks
JOIN #PreChecksDate     ON prdate_prch_ID = prch_ID
JOIN Divisions         ON prch_dvsn_ID = dvsn_ID
--JOIN Archives           ON prch_arch_ID = arch_ID
JOIN PrecheckItems      ON pcit_prch_ID = prch_ID
JOIN PrecheckStates     ON pcst_ID      = prch_pcst_ID
JOIN
(
  SELECT DISTINCT orit_pcit_ID, ordr_gest_ID
  FROM OrderItems
       JOIN Orders              ON orit_ordr_ID = ordr_ID
  UNION
  SELECT DISTINCT orti_pcit_ID, ordr_gest_ID
  FROM OrderTimeItems
       JOIN Orders              ON orti_ordr_ID = ordr_ID
) OI                     ON orit_pcit_ID = pcit_ID
JOIN Guests              ON ordr_gest_ID = gest_ID
JOIN Clients             ON gest_clnt_ID = clnt_ID
JOIN %ClientGroups       ON clnt_clgr_ID = clgr_ID

JOIN ClientPurseOperations on ('Начисление баллов ГС: ' + CAST(gest_id AS NVARCHAR(max))) like cpop_Description
JOIN ClientPurseTypes on cpop_cptp_ID = cptp_id

where cptp_id = @ClientPurseType
and cpop_date > '19.08.2019 23:59:00'
GROUP BY gest_id, clnt_ID, prch_dvsn_id


SELECT gest_id, clnt_ID,  sum(pcit_Price * pcit_Count) 'Pcit_Sum', prch_dvsn_id
INTO #PreChecksInDivisions1
FROM PreChecks
JOIN #PreChecksDate     ON prdate_prch_ID = prch_ID
JOIN Divisions         ON prch_dvsn_ID = dvsn_ID
--JOIN Archives           ON prch_arch_ID = arch_ID
JOIN PrecheckItems      ON pcit_prch_ID = prch_ID
JOIN PrecheckStates     ON pcst_ID      = prch_pcst_ID
JOIN
(
  SELECT DISTINCT orit_pcit_ID, ordr_gest_ID
  FROM OrderItems
       JOIN Orders              ON orit_ordr_ID = ordr_ID
  UNION
  SELECT DISTINCT orti_pcit_ID, ordr_gest_ID
  FROM OrderTimeItems
       JOIN Orders              ON orti_ordr_ID = ordr_ID
) OI                     ON orit_pcit_ID = pcit_ID
JOIN Guests              ON ordr_gest_ID = gest_ID
JOIN Clients             ON gest_clnt_ID = clnt_ID
JOIN %ClientGroups       ON clnt_clgr_ID = clgr_ID

join ClientPurseRegister on cprg_clnt_ID = gest_clnt_ID
JOIN ClientPurseTypes on cprg_cptp_ID = cptp_id
where cptp_id = @ClientPurseType
GROUP BY gest_id, clnt_ID, prch_dvsn_id


select p1.gest_ID, p1.clnt_ID, p1.Pcit_Sum, p1.prch_dvsn_ID
INTO #PreChecksInDivisions2
from #PreChecksInDivisions1 p1
left join #PreChecksInDivisions p on p.gest_ID  = p1.gest_id 
where p.gest_ID is null

------------------------------------------------



SELECT gest_id, clnt_ID 'cp_clnt_ID', @ClientPurseType 'cp_cptp_ID', getdate() 'cp_Date',
       --sum(pcit_Sum) * %percent 'cp_Sum'
  sum(pcit_Sum) * %percent 'cp_Sum'
 

, dvsn_name--prch_dvsn_id 'dev_id'
INTO #ClientPercents
FROM #PreChecksInDivisions2
  JOIN Divisions  ON  dvsn_ID = prch_dvsn_id
GROUP BY gest_id, clnt_ID, dvsn_name


INSERT INTO ClientPurseOperations(cpop_ID, cpop_Description,    cpop_clnt_ID, cpop_cptp_ID, cpop_Date, cpop_Sum, cpop_Name)
SELECT                            NEWID(), 'Начисление баллов  ГС: '+ CAST(gest_id AS NVARCHAR(max)),  cp_clnt_ID,   cp_cptp_ID,   cp_Date,   cp_Sum, dvsn_name                                 
FROM #ClientPercents


DROP TABLE #PreChecksInDivisions
DROP TABLE #PreChecksInDivisions1
DROP TABLE #PreChecksInDivisions2
DROP TABLE #PreChecksDate
DROP TABLE #ClientPercents
...
Рейтинг: 0 / 0
Помагите с запросом.
    #39875436
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
IF(EXISTS(SELECT 1 FROM PrecheckItems AS T WHERE T.IDENTIFIER='FD8E6587-C694' ))
  INSERT INTO ClientPurseOperations(cpop_ID, cpop_Description,    cpop_clnt_ID, cpop_cptp_ID,       cpop_Date, cpop_Sum, cpop_Name)
       SELECT     NEWID(), 'Начисление баллов  ГС: '+ CAST(gest_id AS NVARCHAR(max)),    cp_clnt_ID,   cp_cptp_ID,   cp_Date,   cp_Sum, dvsn_name                                 
FROM #ClientPercents WHERE 1=0

ELSE

INSERT INTO ClientPurseOperations(cpop_ID, cpop_Description,    cpop_clnt_ID, cpop_cptp_ID, cpop_Date, cpop_Sum, cpop_Name)
SELECT                            NEWID(), 'Начисление баллов  ГС: '+ CAST(gest_id AS NVARCHAR(max)),  cp_clnt_ID,   cp_cptp_ID,   cp_Date,   cp_Sum, dvsn_name                                 
FROM #ClientPercents
...
Рейтинг: 0 / 0
Помагите с запросом.
    #39875462
DSRClient
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
londinium, спасибо бро!м
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помагите с запросом.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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