我有一张桌子
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:
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) 有人可以指示我如何在Postgres数据库中安装分析功能,尤其是ratio_to_report函数吗?
我尝试搜索postgres提供的模块,但是没有看到包含该功能的模块。
我有一堆数据库表,我想删除除了一个.我的脚本如下......但是当我尝试运行时,我创建了一个无限循环.
我有什么想法可以做到这一点?
/* 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) 我知道这似乎是一个简单的问题 - 您可能认为存在现有的答案。然而 ...
了解我希望它具有合理的性能,因此它允许记录执行的每个查询(或者至少是大查询),而无需太多开销。
我的第一个想法是这个查询:
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也包括查询本身。这里的问题是我需要随机化运行的每个查询,这会导致我总是进行硬解析。
我尝试过其他解决方案来回顾历史,但这需要付出更大的代价。我尝试寻找其他解决方案。他们似乎都在某种程度上落后了。
相关文章:
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语句,请验证每列是否具有名称.对于其他语句,请查找空别名.不允许使用定义为""或[]的别名.将别名更改为有效名称.
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: 此处不允许约束规范
我有一个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)
谢谢您的帮助!
我需要按产品计算复利,其中利率可能因年份而异。
简化表如下。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) 基于
对横向列别名引用的支持使您能够编写查询,而无需在 SELECT 列表中重复相同的表达式。例如,您可以定义别名“probability”并在同一 select 语句中使用它:
Run Code Online (Sandbox Code Playgroud)select clicks / impressions as probability, round(100 * probability, 1) as percentage from raw_data;
这与以下内容基本相同:
select 1 AS col
,col + 1 AS col2;
Run Code Online (Sandbox Code Playgroud)
大多数 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)