Создавать временную таблицу, которая хранила бы консультацию

Хорошие я новый в 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]  

introducir la descripción de la imagen aquí

0
задан 08.11.2019, 19:58
1 ответ

Существуют два тип временных подмостков. Одна сохраняет к диску (в частности в базе данных 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 и вида дело в том, что они одинокого чтение.

1
ответ дан 01.12.2019, 12:15
  • 1
    Внимание.. OP не хочет сделать insert. хочет сделать select во временную таблицу... – gbianchi♦ 08.11.2019, 18:57
  • 2
    проблема, которая у меня есть, состоит в том, что эти данные приходят из нескольких подмостков и считают изменения тогда не, как определение FROM, или как я могу способствовать тому, чтобы он взял данные о подмостках, добавочный они не приходят такой каков я нахожусь в select создавая поля. Есть какая-то documentació n, который они рекомендовали мне для этого, я искал, но не нахожу ничего, что подавало бы меня. Добавочный P.D, которого он говорит, что он это не сделал, но в этом случае это не opció n, начальник хочет эту таблицу несмотря на мои mú ltiples возражения и дебет быть типа golbal а следовательно я прочитал. Спасибо – juan david zambrano 08.11.2019, 19:05
  • 3
    @juandavidzambrano я издал ответ с другой возможностью. – Roger Torné 08.11.2019, 19:17
  • 4
    Хорошие вопрос, из-за которого, когда я это пишу в sql server 2016, я солил бы себя " ' ПОВЕРЬТЕ FUNCTION' must be the first statement in в query batch. Msg 156, Level 15, State 1, Line 10 Incorrect syntax near the keyword ' ON'." Вводом он помечает меня ВЕРЬТЕ В такого FUNCTION КАК ОШИБКА – juan david zambrano 08.11.2019, 19:31
  • 5
    Fí jate, которого тебе хватало совсем не, paré ntesis, и т.д. Начни с одной просто и потом ты изменяешь ее, например CREATE FUNCTION dbo.TablaGlobal () RETURNS TABLE AS RETURN ( SELECT getdate() as fecha ) – Roger Torné 08.11.2019, 19:46