小编Luk*_*zda的帖子

按列获取相同的范围值

我有一张桌子

ID Value
1  2
2  3
3  3
4  3
5  2
6  2
7  1
Run Code Online (Sandbox Code Playgroud)

我想分组值,但仍按ID排序,就像这样

ID   Value
1    2
2-4  3
5-6  2
7    1
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

sql sql-server gaps-and-islands

2
推荐指数
1
解决办法
34
查看次数

防止SQL Sever在XML中生成自关闭标记

使用以下SQL:

DECLARE @xml XML=
(
    SELECT 
      N'' AS [content1/\*]
    , N'' AS [content2/\*]
    FOR XML PATH('Rows')
)

SELECT @xml 
Run Code Online (Sandbox Code Playgroud)

我得到自我关闭的标签,如:

<Rows>
  <content1 />
  <content2 />
</Rows>
Run Code Online (Sandbox Code Playgroud)

是否有可能得到这个,在HTML中使用?

<Rows>
  <content1></content1>
  <content2></content2>
</Rows>
Run Code Online (Sandbox Code Playgroud)

此外,是否可能,即没有根节点?

<content1></content1>
<content2></content2>
Run Code Online (Sandbox Code Playgroud)

xml t-sql sql-server

2
推荐指数
1
解决办法
1175
查看次数

Postgres ratio_to_report函数

有人可以指示我如何在Postgres数据库中安装分析功能,尤其是ratio_to_report函数吗?

我尝试搜索postgres提供的模块,但是没有看到包含该功能的模块。

sql postgresql window-functions

2
推荐指数
1
解决办法
1938
查看次数

如何删除除1之外的所有表

我有一堆数据库表,我想删除除了一个.我的脚本如下......但是当我尝试运行时,我创建了一个无限循环.

我有什么想法可以做到这一点?

/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects 
                WHERE [type] = 'U' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL 
IF @name !=  'tableNotToBeDropped'
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Table: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects  
                    WHERE [type] = 'U' AND category = 0 AND [name] > …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

2
推荐指数
1
解决办法
1850
查看次数

如何可靠地获取查询的 SQL_ID

我知道这似乎是一个简单的问题 - 您可能认为存在现有的答案。然而 ...

了解我希望它具有合理的性能,因此它允许记录执行的每个查询(或者至少是大查询),而无需太多开销。

我的第一个想法是这个查询:

select sid,serial#,prev_sql_id from v$session where audsid=userenv('sessionid');
Run Code Online (Sandbox Code Playgroud)

我的想法是,如果我在目标查询之后立即运行此命令,我将sql_id通过 prev_sql_id 捕获正确的结果。

然而...我不是...我得到了不同的SQL...显然在我的目标 SELECT 语句和 的查询之间prev_sql_id,运行了其他东西。在我的例子中,审计已启用,并且我正在将插入捕获到SYS.AUD$表中。不好。

由于我这次尝试的主要目的是捕获查询的执行计划(因为它是由共享池执行和捕获的),所以我认为我可以简单地运行此查询:

SELECT *
  FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
Run Code Online (Sandbox Code Playgroud)

文档指出,使用NULL SQL_IDas 参数,它将在最近运行的查询上运行解释计划。我希望这能解决之前的问题。然而......我得到了将完全相同的插入到SYS.AUD$表中的计划。

您可能会说,好吧,那么只需在查询中添加注释即可轻松捕获SQL_ID,如下所示:

SELECT /* SQL: 1234-12' */ FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

然后我可以尝试按如下方式查找 SQL_ID:

SELECT * FROM V$SQLAREA WHERE sql_text like '%SQL: 1234-12%';
Run Code Online (Sandbox Code Playgroud)

这将为我提供几个可能的候选者,其中V$SQLAREA也包括查询本身。这里的问题是我需要随机化运行的每个查询,这会导致我总是进行硬解析。

我尝试过其他解决方案来回顾历史,但这需要付出更大的代价。我尝试寻找其他解决方案。他们似乎都在某种程度上落后了。

相关文章:

sql oracle sql-execution-plan

2
推荐指数
1
解决办法
4万
查看次数

JOIN sql上的concat 2列值

Table One


ID  Code    Amount
1   2       100
2   2       200


Table Two

ID  Key     Description
1   12      Bag
2   22      Cap
Run Code Online (Sandbox Code Playgroud)

我想加入选择两个表来连接一个表的2列.在表格中说我想在t1.id + t1时加入它们.code = t2.key.在图形我想22 = 22还是12 = 12其中22 or 21的第一面是t1.id+t1.code

查询:

Select * 
from table1 AS t1 INNER JOIN table2 AS t2 ON (t1.id +""+ t1.code)= t2.key
Run Code Online (Sandbox Code Playgroud)

错误:

消息1038,级别15,状态4,行1对象或列名称缺失或为空.对于SELECT INTO语句,请验证每列是否具有名称.对于其他语句,请查找空别名.不允许使用定义为""或[]的别名.将别名更改为有效名称.

sql t-sql sql-server join

2
推荐指数
1
解决办法
3186
查看次数

ORA-02253: 此处不允许约束规范

create table log_table(
log_id varchar2(1000) primary key,
voter_ID varchar2(1000),
date_logged date
CONSTRAINT abc FOREIGN KEY (voter_ID) REFERENCES voters(voter_ID)
)
Run Code Online (Sandbox Code Playgroud)

当我在没有日期元素的情况下创建表格时,该表格有效。但是当我向它添加日期元素时说:

ORA-02253: 此处不允许约束规范

oracle oracle11g

2
推荐指数
1
解决办法
9575
查看次数

有没有办法在ORDER BY之上的某些结果的SQL ORDER BY列ASCENDING?

我有一个100行行查找表,我用它来生成网页上的垂直复选框列表.非常简单的查询来获得结果:

SELECT servicetype FROM XXX
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以对列进行ORDER BY,但是某些已知值是否出现在排序列表的顶部?有点像(我甚至不知道怎么写这个伪代码但是...)

SELECT servicetype FROM XXX
ORDER BY servicetype ASC 
WITH servicetype IN ('Personal', 'Juggling') ON TOP
Run Code Online (Sandbox Code Playgroud)

所以我的列表看起来像:

Juggling         - On top regardless of ORDER BY
Personal         - On top regardless of ORDER BY
Anteating        - Everything else is ORDER BY
Barflying
Beafeating
Carswatting
etc...
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

sql t-sql sql-server

2
推荐指数
1
解决办法
68
查看次数

如何在 SQLite 中计算不同利率的复利

我需要按产品计算复利,其中利率可能因年份而异。

简化表如下。initial_value是产品在第一年年初的价值,final_value是包括相应年末利息的价值。

product year    initial_value   interest    final_value
a         1       10000           0.03        10,300.00
a         2                       0.02        10,506.00
a         3                       0.01        10,611.06
b         1       15000           0.04        15,600.00
b         2                       0.06        16,536.00
b         3                       0.07        17,693.52
Run Code Online (Sandbox Code Playgroud)

重新创建表:

CREATE TABLE temp (year INTEGER, product CHARACTER,
                   initial_value DECIMAL(10,2), interest DECIMAL(10,2));

INSERT INTO temp VALUES (1, 'a', 10000, 0.03);
INSERT INTO temp VALUES (2, 'a', 0, 0.02);
INSERT INTO temp VALUES (3, 'a', 0, 0.01);

INSERT INTO temp VALUES (1, 'b', 15000, …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

2
推荐指数
1
解决办法
3259
查看次数

Amazon Redshift - 横向列别名参考

基于

Amazon Redshift 宣布支持横向列别名引用

对横向列别名引用的支持使您能够编写查询,而无需在 SELECT 列表中重复相同的表达式。例如,您可以定义别名“probability”并在同一 select 语句中使用它:

select clicks / impressions as probability, 
        round(100 * probability, 1) as percentage from raw_data;
Run Code Online (Sandbox Code Playgroud)

这与以下内容基本相同:

select 1 AS col
      ,col + 1 AS col2;
Run Code Online (Sandbox Code Playgroud)

db<>小提琴演示

大多数 SQL RDBMS 都会返回错误:Unknown column 'col' in 'field list'


它看起来是一个有趣的语言扩展,但有一个警告。如果我有一个不确定的函数怎么办:

select RAND() AS col
      ,col + 1 AS col2

-- if RAND() returns 0.5 then I would expect
-- 0.5 and 1.5

-- I get: 0.3 and 1.7
-- it means that the query …
Run Code Online (Sandbox Code Playgroud)

sql amazon-redshift

2
推荐指数
1
解决办法
7407
查看次数