CREATE TABLE Point ( P CHAR(2), X INT, Y INT);
INSERT Point VALUES ( 'A1', 3, 4 ), ( 'A2', 8, 7 );
SELECT CONCAT( PA1.P, PA2.P ), PA2.X - PA1.X, PA2.Y - PA1.Y
FROM Point AS PA1, Point AS PA2
WHERE PA1.P = 'A1' AND PA2.P = 'A2'
Как это организовать в одном SQL запросе?Никак без указания СУБД.
mdf
, ldf
и может ndf
) заказчику и там её "Присоединить".Отслеживать участки незаполненных периодов.
Нужно чтобы запрос сам собирал в одну строку по каждому заказчику данные.
DECLARE @T TABLE ( ID INT, [Name] VARCHAR(50), [Begin] DATE, [End] DATE)
INSERT @T VALUES ( 234, 'SOKOL', '01.02.2020', '08.02.2020' ),
(145, 'EVA', '03.02.2020', '06.02.2020'),
(145, 'EVA', '16.02.2020', '20.02.2020')
SELECT ID, [Name],
STRING_AGG( CONVERT(VARCHAR, [Begin], 104) + '~' +
CONVERT(VARCHAR, [End], 104), ', ')
WITHIN GROUP (ORDER BY [Begin] ) AS [Orders]
FROM @T
GROUP BY ID, [Name]
DECLARE @T TABLE ( M DATETIME2(0))
INSERT @T VALUES ('2017-02-01 15:00:43'),
('2017-03-18 10:30:10'),
('2017-12-11 01:21:55'),
('2017-12-11 15:33:03'),
('2017-03-18 10:30:10'),
('2017-02-22 08:40:42'),
('2017-06-06 23:59:40')
SELECT DISTINCT MB.M AS [Start],
( SELECT TOP 1 M FROM @T AS ME WHERE (ME.M > MB.M) ORDER BY ME.M ) AS [End]
FROM @T AS MB
UNION
SELECT M, M
FROM @T
GROUP BY M
HAVING COUNT(M) > 1
ORDER BY 1, 2
CREATE PROCEDURE AddOrganization
@NameOrg NVARCHAR(50),
@StatusId INT,
@Email NVARCHAR(50) = NULL,
@PhonesNumbers nvarchar(12) = NULL,
@IdOrganizations INT = NULL OUTPUT
AS
INSERT INTO Organizations ( [Name], StatusId ) VALUES ( @NameOrg, @StatusId )
SELECT @IdOrganizations = MAX( ID ) FROM Organizations -- Это вместо TOP(1)
SET @IdOrganizations = IDENT_CURRENT ('Organizations') -- Это если Organizations.ID у вас IDENTITY