- 1
Удалите мой аккаунт
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Удалите мой аккаунт
Удалите мой аккаунт
0
CREATE PROCEDURE [dbo].[DogovorZalog_Get]
@idZalog AS INT --По какому залогу требуется вывести информацию
,@Result AS SMALLINT = 0 OUT --Результат выполнения: 1=Выполнено успешно
,@ErrorComm AS NVARCHAR(2000) = N'' OUT --Текст ошибки/результата
,@ErrorCode AS INT = NULL OUT --Код ошибки
,@needSelect AS BIT = 0 --1=Будет вывод результата в select
,@needRaisError AS SMALLINT = 0 --(1=Будет вызов RaisError наружу)
,@needSelectInfo AS SMALLINT = NULL --(Делать информационный селект или нет. NULL= возьмет из @needSelect)
,@debug AS BIT = 0 --1=Вывод отладочной информации
,@Message AS NVARCHAR(2000) = N'' OUT --Сообщение для пользователя
AS
BEGIN
SET DATEFORMAT DMY;
SET NOCOUNT ON;
SET @Result = 0
SET @ErrorComm = N''
DECLARE @ProcName AS SYSNAME = OBJECT_NAME(@@PROCID, DB_ID())
,@tranCnt AS INT = 0 --(уровень вложенности транзакции)
,@isTran AS SMALLINT = 0 --(1=используется транзакция)
,@needTran AS SMALLINT = 0 --(1=Будет все в транзакции)
--=========================================
BEGIN TRY
SET @tranCnt = @@TRANCOUNT
IF @tranCnt = 0 AND @needTran <> 0 SET @isTran = 1
IF @isTran = 1 BEGIN TRAN
IF @needSelectInfo IS NULL SET @needSelectInfo = @needSelect
--region Логирование
SET @ExProc=CONCAT('EXEC ', @ProcName , CHAR(10),
' @idZalog=', CONVERT(NVARCHAR(50),@idZalog),CHAR(10),
',@Result=', CONVERT(NVARCHAR(50),@Result),CHAR(10),
',@ErrorComm=', '''', REPLACE(@ErrorComm,'''',''''''), '''',CHAR(10),
',@ErrorCode=', CONVERT(NVARCHAR(50),@ErrorCode),CHAR(10),
',@needSelect=', CONVERT(NVARCHAR(50),@needSelect),CHAR(10),
',@needRaisError=', CONVERT(NVARCHAR(50),@needRaisError),CHAR(10),
',@needSelectInfo=', CONVERT(NVARCHAR(50),@needSelectInfo),CHAR(10),
',@debug=', CONVERT(NVARCHAR(50),@debug),CHAR(10),
',@Message=', '''', REPLACE(@Message,'''',''''''), '''')
--endregion Логирование
SELECT TOP 1 *
FROM dbo.Dogovor_Zalog AS DZ
LEFT JOIN dbo.ZalogDestroy AS ZD ON DZ.idDestroy = ZD.idDestroy
WHERE DZ.ID = @idZalog
ORDER BY zd.keyDZ DESC
SET @Result=1
IF @isTran=1 COMMIT TRAN
END TRY
BEGIN CATCH
--region Обработчик ошибок
SET @Result = 0
--(описание деталей ошибки для внешнего обработчика)
SET @ErrorComm = LEFT(N'Ошибка: ' +
CASE WHEN @ErrorComm<>N'' THEN @ErrorComm + CHAR(10) ELSE N'' END
+ ISNULL(N',@Message:' + CAST(@Message AS NVARCHAR(200)) + CHAR(10), N'')
, 2000)
--(описание ошибки для внутреннего обработчика)
SET @ErrorCommInner = LEFT(
CASE WHEN @ErrorComm<>N'' THEN @ErrorComm + CHAR(10) ELSE N'' END
+ N'SP:' + ISNULL(ERROR_PROCEDURE(), N'') + CHAR(10)
+ N',Line:' + ISNULL(CAST(ERROR_LINE() AS NVARCHAR), N'') + CHAR(10)
+ N',Severity:' + ISNULL(CAST(ERROR_SEVERITY() AS NVARCHAR), N'') + CHAR(10)
+ N',Error:' + ISNULL(CAST(ERROR_NUMBER() AS NVARCHAR), N'') + CHAR(10)
+ N',Message:' + ISNULL(ERROR_MESSAGE(), N'') + CHAR(10)
+ N',State:' + ISNULL(CAST(ERROR_STATE() AS NVARCHAR), N'') + CHAR(10)
+ ISNULL(N',' + @ErrorCommInner, N'') + N';', 2000)
PRINT @ErrorCommInner
IF @isTran = 1
BEGIN
/*IF XACT_STATE()=-1*/ ROLLBACK TRAN
/*IF XACT_STATE()=1 COMMIT TRAN*/
END
IF @needRaisError <> 0
BEGIN
DECLARE @ErrorSeverityOut INT = ERROR_SEVERITY()
,@ErrorStateOut TINYINT = ERROR_STATE();
THROW 50000, @ErrorComm, 1
END
--endregion Обработчик ошибок
END CATCH
mEx:
IF @needSelect <> 0
BEGIN
IF @needSelectInfo <> 0
SELECT @Result AS 'Res'
,@ErrorComm AS 'ResTxt'
,@ErrorCode AS 'ErrorCode'
,@Message AS 'Message'
,@ErrorSeverity AS 'Severity'
END
RETURN
END
200 строк кода на одну выборку с одним джоином
0
Новогодний оффтоп #4
░░░░░░░░░░░░░░░░░▐▌░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▀████▀░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▄█▀▀█▄░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▄████▄░░░░░░░░░░░░░░░
░░░░░░░░░░░▄▄██╬██╬████▄▄░░░░░░░░░░░
░░░░░░░░▀███████╬███╬██████▀░░░░░░░░
░░░░░░░░░░▄▄█╬████╬█████▄▄░░░░░░░░░░
░░░░▄▄▄▄██╬████╬█████╬███╬██▄▄▄▄░░░░
░░░░░░▀▀████╬█████╬█████████▀▀░░░░░░
░░░░░░░░░▄█████╬██████╬███▄░░░░░░░░░
░░▄▄▄▄██████╬█████╬███████╬███▄▄▄▄░░
░░▀▀▀████╬█████╬████╬███╬██████▀▀▀░░
░░░░░░░░████╬████████╬██████░░░░░░░░
░░▄▄▄█████╬██████╬█████╬███╬███▄▄▄░░
▀▀▀████╬█████╬█████╬████╬███╬████▀▀▀
░░░░░░▀▀▀██████████████████▀▀▀░░░░░░
░░░░░░░░░░░░░░░░████░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░████░░░░░░░░░░░░░░░░
#1: https://govnokod.ru/27188 https://govnokod.xyz/_27188
#2: https://govnokod.ru/27893 https://govnokod.xyz/_27893
#2: https://govnokod.ru/28484 https://govnokod.xyz/_28484
0
SELECT last_name,
o.product,
p.price,
c.category
FROM orders o
JOIN prices p ON p.product = o.product
JOIN category c ON p.price >= c.limit_1 AND p.price < c.limit_2
Сикель-обоссилий.
0
VALUE1 in (
(extract(year from '2023-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
(extract(year from '2022-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
(extract(year from '2021-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
(extract(year from '2020-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
(extract(year from '2019-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date,
(extract(year from '2018-11-01 00:00:00'::date-interval'1 year')::varchar(4)||'-12-31')::date
)
когда нужно ЗАХАРДКОДИТЬ дату
0
ТОРПЕДО ВПЕРДЕ
)
0
SELECT
DISTINCT customer_contracts_ref._Description AS Номер_договора,
CAST(dateadd(year, -2000, customer_contracts_ref._Fld418) as date) AS Дата_договора,
TSBO_ref._Description AS ЦБО,
trade_for_service._Number AS Номер_сделки,
CAST(dateadd(year, -2000, customer_contracts_ref._Fld419) as date) AS Дата_сделки,
service_ref._Description AS Вид_услуги,
ISNULL(trade_for_service._Fld7941, 0) AS Сумма_сделки,
ISNULL(STUFF(
(SELECT ', ', _Number as [text()]
FROM MTCKCenter.dbo._Document129 implementation_service_2
WHERE implementation_service._Fld2613RRef = implementation_service_2._Fld2613RRef
FOR XML PATH ('')), 1, 1, ''), 'ОТСУТСТВУЕТ') AS Номер_реализации,
ISNULL(STUFF(
(SELECT ', ',CAST(dateadd(year, -2000, trade_for_service._Fld16346) as date) as [text()]
FROM MTCKCenter.dbo._Document129 implementation_service_2
WHERE implementation_service._Fld2613RRef = implementation_service_2._Fld2613RRef
FOR XML PATH ('')), 1, 1, ''), '-') AS Дата_реализации,
CAST(customer_ref._Description as varchar(50)) AS Контрагент,
CASE trade_for_service._Fld9233
WHEN 0
THEN 'нет'
ELSE 'да'
END AS УТП_сделка,
CASE implementation_service._Fld8224
WHEN 0
THEN 'да'
ELSE 'нет'
END AS УТП_реализация,
CASE
WHEN implementation_service._Fld8224 = 0
THEN SUM(ISNULL(CAST(implementation_service._Fld2632 as money), 0))
ELSE '-'
END AS Сумма_УТП,
ISNULL(shopping._Fld1772,0) AS Сумма_оплаты_плюс,
FROM
MTCKCenter.dbo._Document7939 trade_for_service
JOIN MTCKCenter.dbo._Reference29 customer_contracts_ref
ON trade_for_service._Fld7945RRef = customer_contracts_ref._IDRRef
JOIN MTCKCenter.dbo._Reference90 service_ref
ON trade_for_service._Fld7942RRef = service_ref._IDRRef
JOIN MTCKCenter.dbo._Reference93 TSBO_ref
ON trade_for_service._Fld7947RRef = TSBO_ref._IDRRef
LEFT JOIN MTCKCenter.dbo._Document129 implementation_service
ON trade_for_service._Fld7945RRef = implementation_service._Fld2613RRef
JOIN MTCKCenter.dbo._Reference44 customer_ref
ON trade_for_service._Fld7944RRef = customer_ref._IDRRef
LEFT JOIN MTCKCenter.dbo._Document115 shopping
ON trade_for_service._Fld7945RRef = shopping._Fld1749RRef
LEFT JOIN MTCKCenter.dbo._Document104_VT1460 corrections1
ON trade_for_service._Fld7945RRef = corrections1._Fld1463RRef
LEFT JOIN MTCKCenter.dbo._Document104_VT1476 corrections2
ON trade_for_service._Fld7945RRef = corrections2._Fld1479RRef
LEFT JOIN MTCKCenter.dbo._Document98 refunds
ON trade_for_service._Fld7944RRef = refunds._Fld1199RRef
LEFT JOIN MTCKCenter.dbo._Document133_VT2880 write_off_to_
ON trade_for_service._Fld7945RRef = write_off_to_._Fld5602_RRRef
WHERE
(_Fld7942RRef=0x9C8F02DA550767D34576572C765E712A -- уменьшение стоимости авто
OR _Fld7942RRef=0xB999001DD8B71C2811EA5143E3D901D3) -- доплата за а/м
AND service_ref._Marked = 0x00
AND trade_for_service._Posted = 0x01
GROUP BY customer_contracts_ref._Description, trade_for_service._Posted,
customer_contracts_ref._Fld418, customer_contracts_ref._Fld419,
TSBO_ref._Description, service_ref._Description,
shopping._Fld1772, trade_for_service._Fld7941,
implementation_service._Fld2613RRef,
trade_for_service._Fld16346, customer_ref._Description,
trade_for_service._Fld9233, implementation_service._Fld8224,
implementation_service._Fld2632, trade_for_service._Fld8413,
corrections1._Fld8389, corrections2._Fld8390,
refunds._Fld1221, write_off_to_._Fld2887,
write_off_to_._Fld2888, trade_for_service._Number
Здравия всем желающим понюхать эту реальную кучу!
Есть БД, в которую данные заносились на похуй абсолютно.
Пример:
Номер_договора | Номер_сделки | Номер_реализации | Сумма_залупа | Сумма_кастюма | Сумма_второй_палочки_твикс |....|...|...|...|...|
а б в 300 3414 123424
а б в 300 3414 123424
г д е 134 154 17
г д ж 213 3903 125627
г д ж 213 13.151123151 125627
!ЗАДАЧА!
Надо выгрузить таблицу, в которой будут
1. ДИСТИНКТ номер_договора, дата_договора,
2. ДИСТИНКТ номер_сделки, дата_сделки (1 договор = 1 сделка),
3. ЧЕРЕЗ ЗАПЯТУЮ В 1ой ЯЧЕЙКЕ номер_реализации, дата_реализации (в одной сделке их может быть больше 1),
4. Запилить оконную функцию, кейс, или че нахуй угодно(я месяц работаю, до этого тыкал сиквел в вузе тока,
поэтому возможно просто не вижу более адекватное решение), которые
будут СУММИРОВАТЬ сумму_залупу, если у нее по 1 договору несколько РАЗНЫХ значений, и другие суммы,
или ВЫБИРАТЬ только одно значение, если они одинаковые по 1 договору.
1, 2, 3 пункты коряво, но разобрался. Зделал)
На 4ом жоско хочется пробить башней стену, вообще не понимаю, как это написать нормально.
0
Eb-b-b!
Хрюк-хрюк-хрюк-хрюк
0
Доброго дня!
Никогда не писал для баз данных, да судьба-злодейка заставила.
Кто бы помог разобраться, м?
Имеется таблица-справочник, с несколькими колонками. Как я могу прочитать строки из нее, как в ListView?
Имеется код
SELECT
PAT.PATID,
PAT.PATFIRSTNAME,
PAT.PATMIDDLENAME,
PAT.PATLASTNAME,
PAT.PATBIRTHDATE,
PAT.PATSEX,
PAT.PATIDDOC,
PAT.PATIDDOCSERIES,
PAT.PATIDDOCNUMBER,
PAT.PATADDRESSFACT,
PAT.PATADDRESSFROMDOC,
PAT.PATPHONENUM,
PAT.PATPHOTO
FROM
PATLIST PAT
но хз, правильный ли он... и хз как обращаться к элементам полей. я имею только список полей.
Остались ли среди нас сикулянты, кодящие на Delphi+FIBPLUS?
без этого говнеца на работу не примут. ох, горе-то какое.
0
-- Теперь мы можем легко получить отчёт по продажам на прошлую дату:
DELIMITER ;
BEGIN;
CALL set_prot_snapshot_date('2018-10-09 17:23:47', NULL, -1);
SELECT NOW() report_time, d.date, SUM(p.amount * p.price) sum
FROM docs d
INNER JOIN doc_pos p ON d.id = p.doc_id
GROUP BY d.date;
ROLLBACK;
https://habr.com/ru/post/425769/
Как научить MySQL заглядывать в прошлое