AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-5555

Philᵀᴹ's questions

Martin Hope
Philᵀᴹ
Asked: 2018-03-22 06:23:29 +0800 CST

ORDER definido pelo usuário no SQL [duplicado]

  • 8
Essa pergunta já tem respostas aqui :
Ordenação arbitrária de registros em uma tabela (6 respostas)
Definir ordem dos 10 principais produtos manualmente no banco de dados (2 respostas)
Fechado há 4 anos .

Acabei de ler um artigo de blog interessante sobre a ordenação do conjunto de resultados definido pelo usuário.

Alguns aplicativos, como listas de tarefas, precisam manter uma ordem de itens definida pelo usuário. O desafio é que a ordem é arbitrária e pode mudar quando o usuário reorganiza os itens

Uma tabela de exemplo poderia ser assim:

create table items
(
  itemid int primary key,
  itemdata varchar(200),
  ...
  ...
  userorder ??? 
);

Com uma possível consulta de recuperação de:

select * from items order by userorder asc;

Há alguma abordagem que eu deva considerar, já que gostaria de manter as atualizações no mínimo, atualizações atômicas e consultas de recuperação o mais simples e "desempenhadas" possível?

Meu pensamento inicial era usar uma TIMESTAMPcoluna extra e atualizar apenas userordere os timestampvalores para uma única linha (com a consulta de recuperação usando ORDERing by userorder asc, usertimestamp desc), mas isso falha quando você precisa mover uma linha entre duas outras linhas que têm o mesmo valor .

Nenhum banco de dados específico em mente, pois eu mesmo uso um amplo espectro.

order-by
  • 2 respostas
  • 1939 Views
Martin Hope
Philᵀᴹ
Asked: 2017-08-10 05:58:35 +0800 CST

Preenchendo dados ausentes com base nos valores anteriores do final do mês

  • 12

Dados os seguintes dados:

create table #histories
(
    username varchar(10),
    account varchar(10),
    assigned date  
);

insert into #histories 
values 
('PHIL','ACCOUNT1','2017-01-04'),
('PETER','ACCOUNT1','2017-01-15'),
('DAVE','ACCOUNT1','2017-03-04'),
('ANDY','ACCOUNT1','2017-05-06'),
('DAVE','ACCOUNT1','2017-05-07'),
('FRED','ACCOUNT1','2017-05-08'),
('JAMES','ACCOUNT1','2017-08-05'),
('DAVE','ACCOUNT2','2017-01-02'),
('PHIL','ACCOUNT2','2017-01-18'),
('JOSH','ACCOUNT2','2017-04-08'),
('JAMES','ACCOUNT2','2017-04-09'),
('DAVE','ACCOUNT2','2017-05-06'),
('PHIL','ACCOUNT2','2017-05-07') ; 

... que representa quando um determinado usuário foi atribuído a uma conta.

Estou procurando estabelecer quem possuía uma determinada conta no último dia de cada mês (a data atribuída é a data em que a conta transferiu a propriedade), com todos os finais de mês ausentes preenchidos (possivelmente criados a partir de uma tabela útil datesque tenho disponível, com colunas úteis e DateKey, [cortesia de @AaronBertrand]) 1 .DateLastDayOfMonth

Os resultados desejados seriam:

PETER, ACCOUNT1, 2017-01-31
PETER, ACCOUNT1, 2017-02-28
DAVE, ACCOUNT1, 2017-03-31
DAVE, ACCOUNT1, 2017-04-30
FRED, ACCOUNT1, 2017-05-31
FRED, ACCOUNT1, 2017-06-30
FRED, ACCOUNT1, 2017-07-31
JAMES, ACCOUNT1, 2017-08-31
PHIL, ACCOUNT2, 2017-01-31
PHIL, ACCOUNT2, 2017-02-28
PHIL, ACCOUNT2, 2017-03-31
JAMES, ACCOUNT2, 2017-04-30
PHIL, ACCOUNT2, 2017-05-31

Fazer a parte inicial disso com uma função de janela é trivial, é adicionar as linhas "ausentes" com as quais estou lutando.

sql-server sql-server-2008-r2
  • 5 respostas
  • 3240 Views
Martin Hope
Philᵀᴹ
Asked: 2017-06-01 00:39:13 +0800 CST

Consulta detalhando diferenças entre linhas para uma grande quantidade de dados

  • 15

Eu tenho várias tabelas grandes, cada uma com mais de 300 colunas. O aplicativo que estou usando cria "arquivos" de linhas alteradas fazendo uma cópia da linha atual em uma tabela secundária.

Considere um exemplo trivial:

CREATE TABLE dbo.bigtable
(
  UpdateDate datetime,
  PK varchar(12) PRIMARY KEY,
  col1 varchar(100),
  col2 int,
  col3 varchar(20),
  .
  .
  .
  colN datetime
);

Tabela de arquivo:

CREATE TABLE dbo.bigtable_archive
(
  UpdateDate datetime,
  PK varchar(12) NOT NULL,
  col1 varchar(100),
  col2 int,
  col3 varchar(20),
  .
  .
  .
  colN datetime
);

Antes de qualquer atualização ser executada em dbo.bigtable, uma cópia da linha é criada em dbo.bigtable_archive, e dbo.bigtable.UpdateDateé atualizada com a data atual.

Portanto UNION, juntar as duas tabelas e agrupar por PKcria uma linha do tempo de alterações, quando ordenadas por UpdateDate.

Desejo criar um relatório detalhando as diferenças entre as linhas, ordenadas por UpdateDate, agrupadas por PK, no seguinte formato:

PK,   UpdateDate,  ColumnName,  Old Value,   New Value

Old Valuee New Valuepodem ser as colunas relevantes convertidas para a VARCHAR(MAX)(não há TEXTou BYTEcolunas envolvidas), pois não preciso fazer nenhum pós-processamento dos próprios valores.

No momento, não consigo pensar em uma maneira sensata de fazer isso para uma grande quantidade de colunas, sem recorrer a gerar as consultas programaticamente - talvez tenha que fazer isso.

Aberto a muitas ideias, então adicionarei uma recompensa à pergunta após 2 dias.

sql-server sql-server-2008-r2
  • 6 respostas
  • 658 Views
Martin Hope
Philᵀᴹ
Asked: 2016-10-07 00:11:58 +0800 CST

SQL Server - colunas NTEXT e manipulação de string

  • 11

Eu tenho uma tabela com uma NTEXTcoluna chamada comments. Eu tenho uma segunda string, vamos chamá-la de anothercomment(a varchar) que precisa ser colocada dentro de uma determinada commentsstring após a palavra UPDATEHERE.

A conversão para nvarchar(max)trunca a commentsstring, portanto, não posso usar algo como CHARINDEX()( Msg 8152, Level 16, State 10, Line 2 String or binary data would be truncated.). Usei datalength()para verificar se há alguns milhares de colunas com mais de 8.000 caracteres.

Um exemplo do que quero alcançar (embora com strings muito mais longas):

comentários -This is a test UPDATEHERE This is the end of the test

outro comentário -. This is inserted.

Cadeia de caracteres resultante - This is a test UPDATEHERE. This is inserted. This is the end of the test

Eu percebo que isso é trivial com um normal varchar()/ nvarchar(), mas ntexté um pesadelo completo e absoluto para se trabalhar. Sei que é um tipo de dados obsoleto, mas não escrevi o aplicativo em questão.

sql-server sql-server-2008-r2
  • 2 respostas
  • 8708 Views
Martin Hope
Philᵀᴹ
Asked: 2013-02-15 07:35:14 +0800 CST

Onde posso encontrar o documento padrão SQL?

  • 16

Onde posso encontrar uma cópia legal do padrão ISO SQL 2008?

sql-standard
  • 2 respostas
  • 2161 Views
Martin Hope
Philᵀᴹ
Asked: 2012-04-24 01:47:57 +0800 CST

Como um DBA, como eu faria a transição do Oracle para o SQL Server?

  • 33

Sou um DBA Oracle que também possui experiência em Sybase.

Quais são as principais diferenças arquitetônicas e conceituais entre as duas plataformas RDBMS?

Uma resposta semelhante à pergunta SQL Server->Oracle aqui seria mais útil.

sql-server oracle
  • 2 respostas
  • 5908 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve