сомнения с функцией SQL SERVER PIVOT

Я делаю запрос, который показывает мне группировку данных, и пока все в порядке, но я также хотел бы добавить столбец, который показывает общую регистрацию по агентству.

Я прилагаю сценарий моего запроса и результаты:

SELECT * FROM
(
    SELECT
    r.tb_idRegion AS cantidad,
    r.abreviatura AS region,
    o.abreviatura AS organismo
    FROM tb_construccion c
    INNER JOIN tb_organismo o ON o.tb_idOrganismo = c.tb_idOrganismo
    INNER JOIN tb_propiedad p ON p.tb_idPropiedad = c.tb_idPropiedad
    INNER JOIN tb_region r ON r.tb_idRegion = p.tb_idRegion
    WHERE c.tb_idEstadoConstruccion = 1
) t
PIVOT(
    COUNT(cantidad)
    FOR region IN (
        [XV],
        [I],
        [II],
        [III],
        [IV],
        [V],
        [RM],
        [VI],
        [VII],
        [XVI],
        [VIII],
        [IX],
        [XIV],
        [X],
        [XI],
        [XII])
) AS tb_pivot

Результат:

introducir la descripción de la imagen aquí

Назад к Моя проблема, я хотел бы добавить ИТОГО столбец, который будет рассчитывать количество на организм.

Любая помощь приветствуется :)

Приветствую

2
задан 26.11.2019, 19:00
2 ответа
Alguien me puede ayudar, quiero hacer lo mismo, agregar una columna para hacer la sumatoria, este es mi script

create view Pruebaa
as
select Caja.CodigoEmpacador,caja.NumPresentacion,Empacador.Nombre,Empacador.ApellidoP,Empacador.ApellidoM,
 Fecha,count(Cantidad) as CajaXPresentacion
 from Empacador inner join 
(Caja inner join Presentacion on Caja.NumPresentacion =Presentacion.NumPresentacion )on 
Empacador.CodigoEmpacador =Caja.CodigoEmpacador group by Caja.CodigoEmpacador,caja.NumPresentacion,
Empacador.Nombre,Empacador.ApellidoP,Empacador.ApellidoM,Fecha,Cantidad
go

DECLARE @query VARCHAR(4000)
    DECLARE @NumPres VARCHAR(2000)
    SELECT @NumPres =
            STUFF((SELECT DISTINCT '],['+LTRIM([NumPresentacion])FROM [dbo].[Caja]
          ORDER BY '],['+LTRIM([NumPresentacion])desc FOR XML PATH('') ),1,2,'') + ']'
    SET @query=
    'SELECT * FROM
    (select*from Pruebaa) sourceData
    PIVOT(SUM(CajaXPresentacion)FOR [NumPresentacion] IN ('+ @NumPres +'))as Total
     order by Fecha desc,
    CodigoEmpacador desc ' 
    EXECUTE(@query)

Восток - результат

introducir la descripción de la imagen aquí

Я хочу сделать вертикальный sumatoria и горизонтально презентаций, которые находят выписанными 6,4,11.5,11.3,11,10, но могут быть выписанными даже mГЎs. Я хочу, чтобы они сложили Вашу соответствующую стоимость горизонтально (1+1+null+null+2+2=6, 2+1+1+1+3+1=9) и вертикально (1+2=3,1+1=2, null+1=1, null+1=1, 2+3=5, 2+1=3), надеюсь и было возможно делать, а только, с которым смогли вертикально

0
ответ дан 01.12.2019, 10:47

Чтобы добавлять полную колонну, sГіlo ты должен добавлять сумму оставшейся части колонн.

SELECT organismo,
       [XV],
        [I],
        [II],
        [III],
        [IV],
        [V],
        [RM],
        [VI],
        [VII],
        [XVI],
        [VIII],
        [IX],
        [XIV],
        [X],
        [XI],
        [XII],
        total = [XV]  + [I]   + [II]   + [III] + [IV]  + [V] + [RM] + [VI] 
              + [VII] + [XVI] + [VIII] + [IX]  + [XIV] + [X] + [XI] + [XII]
FROM
(
    SELECT
    r.tb_idRegion AS cantidad,
    r.abreviatura AS region,
    o.abreviatura AS organismo
    FROM tb_construccion c
    INNER JOIN tb_organismo o ON o.tb_idOrganismo = c.tb_idOrganismo
    INNER JOIN tb_propiedad p ON p.tb_idPropiedad = c.tb_idPropiedad
    INNER JOIN tb_region r ON r.tb_idRegion = p.tb_idRegion
    WHERE c.tb_idEstadoConstruccion = 1
) t
PIVOT(
    COUNT(cantidad)
    FOR region IN (
        [XV],
        [I],
        [II],
        [III],
        [IV],
        [V],
        [RM],
        [VI],
        [VII],
        [XVI],
        [VIII],
        [IX],
        [XIV],
        [X],
        [XI],
        [XII])
) AS tb_pivot;

Однако, всегда мне казался mГЎs ясно (и versГЎtil) она opciГіn, что у нас есть с до того, как вмешивался действующий ЦЕНТР, который это условные атташе.

SELECT
    o.abreviatura AS organismo,
    COUNT( CASE WHEN r.abreviatura = 'XV  ' THEN r.tb_idRegion END) AS [XV],
    COUNT( CASE WHEN r.abreviatura = 'I   ' THEN r.tb_idRegion END) AS [I],
    COUNT( CASE WHEN r.abreviatura = 'II  ' THEN r.tb_idRegion END) AS [II],
    COUNT( CASE WHEN r.abreviatura = 'III ' THEN r.tb_idRegion END) AS [III],
    COUNT( CASE WHEN r.abreviatura = 'IV  ' THEN r.tb_idRegion END) AS [IV],
    COUNT( CASE WHEN r.abreviatura = 'V   ' THEN r.tb_idRegion END) AS [V],
    COUNT( CASE WHEN r.abreviatura = 'RM  ' THEN r.tb_idRegion END) AS [RM],
    COUNT( CASE WHEN r.abreviatura = 'VI  ' THEN r.tb_idRegion END) AS [VI],
    COUNT( CASE WHEN r.abreviatura = 'VII ' THEN r.tb_idRegion END) AS [VII],
    COUNT( CASE WHEN r.abreviatura = 'XVI ' THEN r.tb_idRegion END) AS [XVI],
    COUNT( CASE WHEN r.abreviatura = 'VIII' THEN r.tb_idRegion END) AS [VIII],
    COUNT( CASE WHEN r.abreviatura = 'IX  ' THEN r.tb_idRegion END) AS [IX],
    COUNT( CASE WHEN r.abreviatura = 'XIV ' THEN r.tb_idRegion END) AS [XIV],
    COUNT( CASE WHEN r.abreviatura = 'X   ' THEN r.tb_idRegion END) AS [X],
    COUNT( CASE WHEN r.abreviatura = 'XI  ' THEN r.tb_idRegion END) AS [XI],
    COUNT( CASE WHEN r.abreviatura = 'XII ' THEN r.tb_idRegion END) AS [XII],
    COUNT(*) AS total
FROM tb_construccion c
INNER JOIN tb_organismo o ON o.tb_idOrganismo = c.tb_idOrganismo
INNER JOIN tb_propiedad p ON p.tb_idPropiedad = c.tb_idPropiedad
INNER JOIN tb_region r ON r.tb_idRegion = p.tb_idRegion
WHERE c.tb_idEstadoConstruccion = 1
GROUP BY o.abreviatura;
2
ответ дан 01.12.2019, 10:47
  • 1
    Спасибо @Luis Cazarez, probaré этот способ осуществлять, что он мне кажется интересным – Felipe Martínez Delgado 27.11.2019, 18:21