Ir para conteúdo
Fórum Script Brasil

Bonamim.jb

Membros
  • Total de itens

    7
  • Registro em

  • Última visita

Sobre Bonamim.jb

Bonamim.jb's Achievements

0

Reputação

  1. Bonamim.jb

    Melhorar código

    Opa. Vê se dessa forma te ajuda: /* NOTA: - O TIPO DE DADO DE CADA CAMPO VOCÊ ALTERA CONFORME A SUA NECESSIDADE; - FIZ COM VARIÁVEL TABELA, POIS NÃO SEI A QUANTIDADE DE REGISTRO QUE VAI TRABALHAR, MAS SE FOR UM VOLUME GRANDE USE TABELA TEMPORÁRIA COM CHAVE PRIMÁRIA: (CREATE TABLE #TB_BASE) */ DECLARE @TB_BASE TABLE ( BASE_CNPJ VARCHAR(8), CLIENTE VARCHAR(8), SALES_ORG VARCHAR(8), PAYER VARCHAR(8) ) INSERT INTO @TB_BASE SELECT DISTINCT SUBSTRING(B1.STCD1KNA1, 1, 8) AS BASE_CNPJ, B2.KUNNR AS CLIENTE, VKORG AS SALES_ORG, KUNN2 AS PAYER FROM B2 INNER JOIN B1 ON B2.KUNNR = B1.KUNNR WHERE PARVW = 'RG' AND B2.KUNNR <> KUNN2 AND B1.STCD1KNA1 <> '' AND LAND1KNA1 = 'BR' -- FINAL SELECT TB1.BASE_CNPJ, TB1.CLIENTE, TB1.SALES_ORG, TB1.PAYER FROM @TB_BASE TB1 INNER JOIN (SELECT A.BASE_CNPJ FROM (SELECT DISTINCT TB.BASE_CNPJ, COUNT(TB.BASE_CNPJ) AS QTDE_A FROM @TB_BASE TB GROUP BY TB.BASE_CNPJ HAVING COUNT(TB.BASE_CNPJ) > 1 ) AS A INNER JOIN (SELECT DISTINCT TB.BASE_CNPJ + TB.PAYER AS BASE_CNPJ, COUNT(TB.BASE_CNPJ + TB.PAYER) AS QTDE_B FROM @TB_BASE TB GROUP BY TB.BASE_CNPJ + TB.PAYER HAVING COUNT(TB.BASE_CNPJ + TB.PAYER) > 1 ) B ON A.BASE_CNPJ = SUBSTRING(B.BASE_CNPJ, 1, 8) WHERE QTDE_A <> QTDE_B ) TB2 ON TB1.BASE_CNPJ = TB2.BASE_CNPJ ORDER BY TB1.BASE_CNPJ, TB1.PAYER
  2. Por favor, Manda a sintaxe que está tentando usar.
  3. Você está usando a seguinte ligação: left join tblvendidos as vi on vi.codVenda = ve.codCadastro left join tblpagamento as pg on pg.codVenda = ve.codCadastro Porém, acredito que deveria ser assim: left join tblvendidos as vi on vi.codCadastro = ve.codCadastro left join tblpagamento as pg on pg.codCadastro = ve.codCadastro
  4. Bom Dia, Pelo que você informou a versão do Adventure Works que está tentando instalar é 2014, mas qual a versão do SQL instalada na sua máquina? Pois instalar bases de versões superiores a instalada na sua máquina creio que não é possível.
  5. Obrigado pela atenção de todos. Consegui a resposta: http://social.technet.microsoft.com/Forums/pt-BR/252c1e73-6db8-4cee-96a1-839946975947/ajustar-incio-de-turno?forum=520&prof=required
  6. Olá Pessoal, Estou tendo que ajustar o início do turno de alguns funcionários, porém estou com muita dificuldade. Segue abaixo a situação: +---------------------------------+--------------------------------+-------------+-----------------+ | STARTTIME | ENDTIME |ATIVIDADE|FUNCIONARIO| +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-01 22:00:00.000 |2013-01-02 01:00:00.000 | xbc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-02 01:00:00.000 |2013-01-02 02:50:00.000 | ihc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-02 02:50:00.000 |2013-01-02 03:00:00.000 | uwc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-02 03:00:00.000 |2013-01-02 03:30:20.000 | abc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-02 03:30:20.000 |2013-01-02 04:00:00.000 | dbc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-02 04:00:00.000 |2013-01-02 05:20:00.000 | auc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-04 20:00:00.000 |2013-01-04 20:50:00.000 | xbc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-04 20:50:00.000 |2013-01-04 23:17:00.000 | ihc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-04 23:17:00.000 |2013-01-05 01:10:00.000 | uwc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-05 01:10:00.000 |2013-01-05 02:32:20.000 | abc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-05 02:32:20.000 |2013-01-05 04:00:00.000 | dbc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-05 04:00:00.000 |2013-01-05 04:43:00.000 | auc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-05 17:22:50.000 |2013-01-05 18:00:00.000 | uwc | y | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-05 18:00:00.000 |2013-01-05 18:32:40.000 | abc | y | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-05 18:32:40.000 |2013-01-05 19:00:00.000 | dbc | y | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-05 19:00:00.000 |2013-01-05 20:23:53.000 | auc | y | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-08 23:40:00.000 |2013-01-09 03:40:40.000 | abc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-09 03:40:40.000 |2013-01-10 00:05:00.000 | dbc | x | +---------------------------------+--------------------------------+-------------+-----------------+ |2013-01-10 00:05:00.000 |2013-01-10 03:00:58.000 | auc | x | +---------------------------------+--------------------------------+-------------+-----------------+ Eu tenho atualmente a situação acima, porém preciso criar um campo "INICIO_TURNO" e dar um UPDATE conforme a situação abaixo: +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ | STARTTIME | ENDTIME |ATIVIDADE|FUNCIONARIO| INICIO_TURNO | +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-01 22:00:00.000 |2013-01-02 01:00:00.000 | xbc | x |2013-01-01 22:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-02 01:00:00.000 |2013-01-02 02:50:00.000 | ihc | x |2013-01-01 22:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-02 02:50:00.000 |2013-01-02 03:00:00.000 | uwc | x |2013-01-01 22:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-02 03:00:00.000 |2013-01-02 03:30:20.000 | abc | x |2013-01-01 22:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-02 03:30:20.000 |2013-01-02 04:00:00.000 | dbc | x |2013-01-01 22:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-02 04:00:00.000 |2013-01-02 05:20:00.000 | auc | x |2013-01-01 22:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-04 20:00:00.000 |2013-01-04 20:50:00.000 | xbc | x |2013-01-04 20:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-04 20:50:00.000 |2013-01-04 23:17:00.000 | ihc | x |2013-01-04 20:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-04 23:17:00.000 |2013-01-05 01:10:00.000 | uwc | x |2013-01-04 20:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-05 01:10:00.000 |2013-01-05 02:32:20.000 | abc | x |2013-01-04 20:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-05 02:32:20.000 |2013-01-05 04:00:00.000 | dbc | x |2013-01-04 20:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-05 04:00:00.000 |2013-01-05 04:43:00.000 | auc | x |2013-01-04 20:00:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-05 17:22:50.000 |2013-01-05 18:00:00.000 | uwc | y |2013-01-05 17:22:50.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-05 18:00:00.000 |2013-01-05 18:32:40.000 | abc | y |2013-01-05 17:22:50.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-05 18:32:40.000 |2013-01-05 19:00:00.000 | dbc | y |2013-01-05 17:22:50.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-05 19:00:00.000 |2013-01-05 20:23:53.000 | auc | y |2013-01-05 17:22:50.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-08 23:40:00.000 |2013-01-09 03:40:40.000 | abc | x |2013-01-08 23:40:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-09 03:40:40.000 |2013-01-10 00:05:00.000 | dbc | x |2013-01-08 23:40:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ |2013-01-10 00:05:00.000 |2013-01-10 03:00:58.000 | auc | x |2013-01-08 23:40:00.000| +---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+ Poderiam me ajustar a criar uma lógica para atualizar o campo "INICIO_TURNO", conforme mencionado acima no SQL SERVER 2012? Observação: Existem diversos funcionários (X, y, z, ...), e pode ou não existir turnos que atravessam o dia conforme mencionei nos exemplos.
  7. Boa Tarde Pessoal, Sou iniciante ainda em SQL e estou tendo problemas de lentidão na consulta deste script que montei: DECLARE @TIMEZONE VARCHAR(50), @BIAS INT, @FROMDATE DATETIME, @TODATE DATETIME SET @FROMDATE = NULL SET @TODATE = NULL IF @FROMDATE IS NULL OR @TODATE IS NULL BEGIN SET @FROMDATE = CONVERT(DATETIME,CONVERT(VARCHAR,DATEADD(DAY,-7,GETDATE()),112),120) SET @TODATE = DATEADD(SECOND,-1,DATEADD(DAY,7,@FROMDATE)) END SELECT DISTINCT DATEADD(MINUTE, TZ1.BIAS, ACT.STARTTIME), DATEADD(MINUTE, TZ2.BIAS, ACT.ENDTIME), ACT.EMPLOYEEID, ACT.ACTIVITYID, DATEDIFF(SECOND, ACT.STARTTIME, ACT.ENDTIME) QTD_SEGUNDOS FROM AAAAAAAAAAAAAAAAAAA ACT (NOLOCK) INNER JOIN BBBBBBBBBBBBBBBBBBBBBBBB WO1 (NOLOCK) ON ACT.EMPLOYEEID = WO1.WORKRESOURCEID AND ACT.STARTTIME BETWEEN WO1.STARTTIME AND ISNULL(WO1.ENDTIME, CAST('99991231' AS DATETIME)) INNER JOIN BBBBBBBBBBBBBBBBBBBBBBBB WO2 (NOLOCK) ON ACT.EMPLOYEEID = WO2.WORKRESOURCEID AND ACT.ENDTIME BETWEEN WO2.STARTTIME AND ISNULL(WO2.ENDTIME, CAST('99991231' AS DATETIME)) INNER JOIN CCCCCCCCCCCC O1 (NOLOCK) ON WO1.ORGANIZATIONID = O1.ID INNER JOIN CCCCCCCCCCCC O2 (NOLOCK) ON WO2.ORGANIZATIONID = O2.ID INNER JOIN DDDDDDDDDD TZ1 (NOLOCK) ON O1.TIMEZONE = TZ1.TIMEZONE AND NOT((TZ1.ENDTIME <= ACT.STARTTIME) OR (TZ1.STARTTIME > ACT.STARTTIME)) INNER JOIN DDDDDDDDDD TZ2 (NOLOCK) ON O2.TIMEZONE = TZ2.TIMEZONE AND NOT((TZ2.ENDTIME <= ACT.ENDTIME) OR (TZ2.STARTTIME > ACT.ENDTIME)) WHERE DATEADD(MINUTE, TZ1.BIAS, ACT.STARTTIME) BETWEEN @FROMDATE AND @TODATE AND ACT.ACTIVITYID <> -4001 O resultado deste script é exatamente o que preciso (ajustar o fuso-horário de cada dia/atividade/funcionário, baseado no timzezone da organização de cada funcionário), porém esta demorando mais de 20 horas para processar. Detalhes: Tabela: AAAAAAAAAAAAAAAAAAA Tem mais de 10.000.000 de registros, separado por dia/hora inicio e dia/hora fim, por funcionário e atividade. (Esses registros são apenas de 7 dias). Tabela: BBBBBBBBBBBBBBBBBBBBBBBB Tem mais de 4.000.000 de registros, separado por dia/hora inicio e dia/hora fim, por funcionário organização. (Esses registros são apenas de 7 dias). Tabela: CCCCCCCCCCCC Tem mais de 32.000 de registros, separado por dia/hora inicio e dia/hora fim, e organização. (Esses registros são apenas de 7 dias). Tabela: DDDDDDDDDD Tem mais de 80.000 de registros, separado por dia/hora inicio e dia/hora fim, e timezone. (Esses registros são apenas de 7 dias). Já criei chaves primárias nos campos de cruzamento e não ajudou. Poderiam me auxiliar? Muito Obrigado!!!!
×
×
  • Criar Novo...