Хорошие я новый в SQl мне нужно, чтобы консультация, которую я реализую, хранилась во временной таблице, как я могу делать. Это консультация
SELECT H.[id_hi],
H.[int_anoot],
H.[int_consecutivoot],
H.[fk_tm],
IETM.[vrc_nombretm],
(SELECT IETM.[vrc_nombretm]
WHERE IETM.[vrc_nombretm] = 'preventivo') AS TA_PREV,
(SELECT IETM.[vrc_nombretm]
WHERE IETM.[vrc_nombretm] = 'correctivo') AS TA_CORR,
(SELECT IETM.[vrc_nombretm]
WHERE IETM.[vrc_nombretm] <> 'correctivo'
AND IETM.[vrc_nombretm] <> 'preventivo'
AND IETM.[vrc_nombretm] <> 'otro') AS TA_O_Mto,
(SELECT IETM.[vrc_nombretm]
WHERE IETM.[vrc_nombretm] = 'otro') AS TA_Otro,
(SELECT H.[bit_nombrett1]
WHERE H.[bit_nombrett1] = 1) AS T_MEC,
(SELECT H.[bit_nombrett2]
WHERE H.[bit_nombrett2] = 1) AS T_ELEC,
(SELECT H.[bit_nombrett3]
WHERE H.[bit_nombrett3] = 1) AS T_INS_ELEC,
(SELECT H.[bit_nombrett4]
WHERE H.[bit_nombrett4] = 1) AS T_OTRO,
H.[int_tiempoduraciondias] AS TDISD,
H.[int_tiempoduracionhoras] AS THORD,
H.[int_tiempoduracionminutos] AS TMIND,
H.[int_tiempoimproductivodias] AS TDIAI,
H.[int_tiempoimproductivohoras] AS THORI,
H.[int_tiempoimproductivominutos] AS TMINI,
IES.[vrc_clsabreviatura] AS ESTADO,
GMOHI.[int_numhorashombre_grmo] AS HH_MO_HI,
GMOHI.[int_numminutos_grmo] AS MH_MO_HI,
GMOHI.[int_tipohora] AS TIPO_MO_HI,
GMOHI.[mny_valorhora_grmo] AS VALOR_HH_HI
FROM [dbo].[tbl_hi] H
LEFT JOIN [tbl_ie_tipo_mantenimiento] IETM
ON H.[fk_tm] = IETM.[id_tm]
LEFT JOIN [tbl_ie_estados] IES
ON H.[fk_es] = IES.[id_es]
LEFT JOIN [tbl_hi_gastoreal_manoobra] AS GMOHI
ON H.[id_hi] = GMOHI.[fk_hi]
Существуют два тип временных подмостков. Одна сохраняет к диску (в частности в базе данных TempDB) и другая в памяти, как переменная mГЎs. Эта Гєltima - любимая, когда у таблицы не должно быть много данных.
Первая создается как нормальная таблица, но со знаком #
впереди. CrearГ-хозяева asГ-:
CREATE TABLE #TablaTemporal (Campo1 int, campo2 varchar(50), ...)
и потом мы можем вводить то, что давайте хотеть в ней как в любой другой таблице.
Вторая определяется как тип table
и создается следующей формы:
DECLARE @TablaTemporal table (Campo1 int, campo2 varchar(50), ...)
, однажды Созданный может вводить данные:
INSERT INTO @TablaTemporal (Campo1, Campo2, ...)
SELECT Campo1, Campo2, ...
FROM TuTabla
INSERT INTO #TablaTemporal (Campo1, Campo2, ...)
SELECT Campo1, Campo2, ...
FROM TuTabla
и подбирать результат
SELECT *
FROM @TablaTemporal
SELECT *
FROM #TablaTemporal
ИЗДАЛО ответ
, Хотя существует возможность располагать временной таблицей для всех сеансов (вместо #
используют ##
), возможно, что лучшая opciГіn состоит в том, чтобы помещать консультацию в одну funciГіn , которые возвращали бы Ваш контент, у этого есть преимущество, которого возможно посылать parГЎmetros в нее funciГіn. SerГ - во что-то asГ-:
CREATE FUNCTION dbo.TablaGlobal ()
RETURNS TABLE
AS
RETURN
(
SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'Total'
FROM Production.Product AS P
JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID
JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID
JOIN Sales.Customer AS C ON SH.CustomerID = C.CustomerID
WHERE C.StoreID = @storeid
GROUP BY P.ProductID, P.Name
);
и потом llamarГ-схвати ее asГ-:
SELECT * FROM dbo.TablaGlobal()
Невыгода одной funciГіn и вида дело в том, что они одинокого чтение.
CREATE FUNCTION dbo.TablaGlobal () RETURNS TABLE AS RETURN ( SELECT getdate() as fecha )
– Roger Torné 08.11.2019, 19:46