AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-5555

Philᵀᴹ's questions

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

SQL 中用户定义的排序 [重复]

  • 8
这个问题在这里已经有了答案:
在表中任意排序记录 6 个答案
在数据库中手动设置前 10 名产品的顺序 2 个答案
4年前关闭。

我刚刚阅读了一篇关于用户定义结果集排序的有趣博客文章。

一些应用程序,例如待办事项列表,需要维护用户定义的项目顺序。挑战在于顺序是任意的,并且可以在用户重新排列项目时更改

一个示例表可能是这样的:

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

使用可能的检索查询:

select * from items order by userorder asc;

鉴于我想将更新保持在最低限度,更新原子和检索查询尽可能简单和“高性能”,是否有任何方法可以考虑?

我最初的想法是使用一个额外的TIMESTAMP列,并且只更新单行userorder的值(检索查询使用ing by ),但是当您需要在具有相同值的其他两行之间移动一行时,这会失败.timestampORDERuserorder asc, usertimestamp desc

没有考虑特定的数据库,因为我自己使用的范围很广。

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

根据之前的月末值填充缺失数据

  • 12

给定以下数据:

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') ; 

...表示将给定用户分配给帐户的时间。

我正在寻找在每个月的最后一天确定谁拥有给定帐户(指定日期是帐户转移所有权的日期),并填充任何缺少的月末dates(可能是从我可用的方便表创建的,带有有用的列DateKey,Date和LastDayOfMonth, [@AaronBertrand 提供]) 1。

期望的结果是:

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

使用窗口函数执行此操作的初始部分是微不足道的,它添加了我正在努力解决的“缺失”行。

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

查询大量数据行间的详细差异

  • 15

我有许多大表,每个表都有 >300 列。我正在使用的应用程序通过在辅助表中复制当前行来创建更改行的“存档”。

考虑一个简单的例子:

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

存档表:

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

在 上执行任何更新之前dbo.bigtable,会在 中创建该行的副本dbo.bigtable_archive,然后dbo.bigtable.UpdateDate使用当前日期进行更新。

因此UNION,将两个表放在一起并分组时,按 .PK排序时创建更改时间线UpdateDate。

我希望创建一个报告,详细说明行之间的差异,按 排序UpdateDate,按 分组PK,格式如下:

PK,   UpdateDate,  ColumnName,  Old Value,   New Value

Old Value并且New Value可以将相关列转换为 a (VARCHAR(MAX)不涉及列),因为我不需要对值本身进行任何后处理。TEXTBYTE

目前,我想不出一种合理的方法来对大量列执行此操作,而不求助于以编程方式生成查询——我可能不得不这样做。

对很多想法持开放态度,所以我会在 2 天后为这个问题增加赏金。

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

SQL Server - NTEXT 列和字符串操作

  • 11

我有一个表,其中有一NTEXT列名为comments. 我有第二个字符串,我们称它为anothercomment(a varchar),它需要放在commentsword 之后的给定字符串中UPDATEHERE。

转换为nvarchar(max)截断comments字符串,所以我不能使用CHARINDEX()(之类的Msg 8152, Level 16, State 10, Line 2 String or binary data would be truncated.)。我曾经datalength()检查过有几千列 > 8000 个字符。

我想要实现的一个示例(尽管字符串更长):

注释 -This is a test UPDATEHERE This is the end of the test

另一条评论——. This is inserted.

结果字符串 - This is a test UPDATEHERE. This is inserted. This is the end of the test

我意识到这对于普通的varchar()/来说是微不足道的nvarchar(),但却ntext是一个彻头彻尾的噩梦。我意识到这是一种已弃用的数据类型,但我没有编写有问题的应用程序。

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

在哪里可以找到 SQL 标准文档?

  • 16

在哪里可以找到 ISO SQL 2008 标准的合法副本?

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

作为一名 DBA,我将如何从 Oracle 过渡到 SQL Server?

  • 33

我是一名 Oracle DBA,也有 Sybase 经验。

两个 RDBMS 平台之间的主要架构和概念差异是什么?

类似于此处的 SQL Server->Oracle 问题的答案将是最有用的。

sql-server oracle
  • 2 个回答
  • 5908 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve