小编Joe*_*lli的帖子

将SQL表转换为XML,并将列作为父节点

我正在尝试将表转换为XML结构,我希望表中的一列表示父节点,另一列表示子节点.

我有部分路,但我没有完整的解决方案.我需要TABLE_NAME列转换为xml父节点,COLUMN_NAME列转换为子节点.如果我执行以下操作,我会得到嵌套,但我也得到多个父节点.

select
 TABLE_NAME AS 'tn',
 COLUMN_NAME AS 'tn/cn'
from (
 select 'TABLE_A' AS TABLE_NAME, 'COLUMN_1' AS COLUMN_NAME
 UNION ALL
 select 'TABLE_A' AS TABLE_NAME, 'COLUMN_2' AS COLUMN_NAME
 UNION ALL
 select 'TABLE_B' AS TABLE_NAME, 'COLUMN_1' AS COLUMN_NAME
 UNION ALL
 select 'TABLE_B' AS TABLE_NAME, 'COLUMN_2' AS COLUMN_NAME
) x
for xml path(''), ROOT('datatable')
Run Code Online (Sandbox Code Playgroud)

OUPUT >>>

<datatable>
  <tn>TABLE_A<cn>COLUMN_1</cn></tn>
  <tn>TABLE_A<cn>COLUMN_2</cn></tn>
  <tn>TABLE_B<cn>COLUMN_1</cn></tn>
  <tn>TABLE_B<cn>COLUMN_2</cn></tn>
</datatable>
Run Code Online (Sandbox Code Playgroud)

期望的产量>>>

<datatable>
  <TABLE_A>
   <cn>COLUMN_1</cn>
   <cn>COLUMN_2</cn>
  </TABLE_A>
  <TABLE_B>
    <cn>COLUMN_1</cn>
    <cn>COLUMN_2</cn>
  </TABLE_B>
</datatable>
Run Code Online (Sandbox Code Playgroud)

这可能还是我在做梦?没有XML EXPLICIT是可能的,还是这是EXPLICIT的用途?

我一直在尝试的另一种可能性是填充xml然后应用xquery,但还没有喜悦.

谢谢,

加里

xml sql sql-server sql-server-2005 sql-server-2008

6
推荐指数
1
解决办法
3536
查看次数

SQL Server 2008 - 特定数据库的每秒事务数

有没有人知道如何测量SQL Server 2008中特定数据库的每秒SQL事务数?

sql-server sql-server-2008

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

Oracle to_char bug

我不知道这是一个bug还是什么,但是当我尝试使用Oracle中的to_char函数以某种方式格式化星期几时,SQL Plus会给我这个错误:ORA-01821:日期格式无法识别

这是导致问题的一行

SELECT TO_CHAR(sysdate,'dsp') from dual;
Run Code Online (Sandbox Code Playgroud)

所以d是'星期几'而sp是拼写.这行应打印五行,因为我们是星期四.

这很奇怪,因为下一行有效

SELECT TO_CHAR(sysdate,'ddsp') from dual;
Run Code Online (Sandbox Code Playgroud)

dd是'每月的一天'所以sql加上打印二十九没有任何问题!!

有人能告诉我为什么这条线不起作用?

谢谢..

sql oracle format date to-char

6
推荐指数
1
解决办法
700
查看次数

SQL Server DMV - sys.dm_db_missing_index_group_stats - 这些列是什么意思?

我正在修改创建查询以查找缺少的索引.我已经在他们的SQL Server DMV Starter Pack电子书中采用了Red-Gate人员创建的基本查询,并对其进行了一些修改.有几列sys.dm_db_missing_index_group_stats我不知道如何解释.他们是:

avg_total_user_cost
avg_user_impact
Run Code Online (Sandbox Code Playgroud)

根据文档,我发现avg_total_user_cost定义为表示每次执行用户查询时的平均总用户成本.并且,avg_user_impact 将值表示为百分比.它显示了创建索引时可以获得的改进量.

我的查询说应该添加的索引显示2.22平均用户成本和99.82用户影响.这些数字到底意味着什么?这是否意味着添加索引,我可以将关联查询的速度提高99.82%.我不知道2.22可能意味着什么.

谢谢.

sql-server dynamic-management-views

5
推荐指数
2
解决办法
3742
查看次数

尽管Schema是用户的默认架构,但无效的对象错误

我从SSMS(SQL Server 2008)执行选择查询时遇到问题.它发出错误,指出'无效对象'

User Name: admin
DefaultSchema: S1
Table being accessed: employee
Run Code Online (Sandbox Code Playgroud)

查询1:

select * from employee
Run Code Online (Sandbox Code Playgroud)

QUERY2:

select * from S1.employee
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Query1失败并出现上述错误,而Query2工作正常并获取值.有人可以帮我解决这个问题.尽管将S1作为用户'admin'的默认架构,它仍然要求我附加架构名称以执行查询.

谢谢.

sql-server object sql-server-2008

5
推荐指数
1
解决办法
2042
查看次数

MySql UPDATE优化?

假设我有一个包含两列A和B的表.在A列上有一个索引但在B列上没有.我想发出数百万个查询,如:

UPDATE t1 SET b=b1 WHERE a=a1;
UPDATE t1 SET b=b2 WHERE a=a2;
....
Run Code Online (Sandbox Code Playgroud)

对应于每个唯一值,有1到100,000行a.平均而言,它大约是100.

对于每个更新语句,平均60%的行不会更改,因为这些行b已经具有所需的值.对于30%的更新,不会更改任何匹配的行.

使用这样的语句是否有意义?

UPDATE t1 SET b=b1 WHERE a=a1 AND b<>b1;
Run Code Online (Sandbox Code Playgroud)

它是否会通过消除对磁盘的不必要的回写来加速该过程,或者Mysql 5是否足够智能以识别没有任何更改并且不需要写回磁盘?

mysql database performance

5
推荐指数
1
解决办法
735
查看次数

使用FOR XML PATH从XMLTYPE列中进行选择时如何删除列名

我有一个表格,其中包含名为"InvoiceXML"的XMLTYPE列.

此列中的数据是以下形式的XML:

<Invoice CustomerNum="1234" >
<CustomDeliveryDetails />
</Invoice>
Run Code Online (Sandbox Code Playgroud)

当我做的时候

SELECT ... FOR XML PATH(''), ROOT('Invoices') 
Run Code Online (Sandbox Code Playgroud)

我最终得到:

<Invoices>
 <InvoiceXML>
  <Invoice CustomerNum="1234" >
  <CustomDeliveryDetails />
  </Invoice>
 </InvoiceXML>
</Invoices>
Run Code Online (Sandbox Code Playgroud)

如何停止输出中出现的列名InvoiceXML?

xml sql t-sql for-loop xmltype

5
推荐指数
2
解决办法
2628
查看次数

MYSQL查询:最新时间戳+过去30分钟的唯一值

我需要从mysql表中检索具有唯一值的最新行.简单的表格布局是时间戳(now())和用户名列.该表每秒获取几次新数据,我需要用户名唯一的最新行.

SELECT MAX(timestamp) as timestamp, username 
    FROM bla 
    WHERE timestamp < (now() - interval 30 minute) 
    GROUP BY username 
    ORDER BY timestamp DESC 
Run Code Online (Sandbox Code Playgroud)

看来这个查询没有返回最新值,可能是因为该组正在做一些我不想要的事情......

mysql

5
推荐指数
2
解决办法
5287
查看次数

返回视图中两列中的一列 - 无论哪一列都不为空

我有一个有三列的表:

ColumnA          ColumnB         ColumnC
AAA               NULL            123
BBB               222             NULL
CCC               NULL            NULL
Run Code Online (Sandbox Code Playgroud)

我想创建一个SELECT语句,它将返回ColumnA,然后是第二列,它将显示ColumnB的值,除非ColumnB为null; 否则它将显示ColumnC的值,即使它是NULL.我可以使用IF语句吗?就像是:

SELECT ColumnA, 
IF(ColumnB IS NULL, ColumnC, ColumnB)
FROM table
Run Code Online (Sandbox Code Playgroud)

**如果我这样做,下一步将返回连接列的值而不是ColumnB.实际上,IF声明是

IF(table.ColumnB IS NULL, table.ColumnC, table2.ColumnD)
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005

5
推荐指数
2
解决办法
2354
查看次数

Oracle的SQL性能调优很多OR vs IN()

我手边没有"解释计划".你能帮忙说出以下哪项更有效率吗?

选项1:

select ... 
    from VIEW_ABC 
    where STRING_COL = 'AA' 
       OR STRING_COL = 'BB' 
       OR STRING_COL = 'BB' 
       OR ...
       OR STRING_COL = 'ZZ'
Run Code Online (Sandbox Code Playgroud)

选项2:

select ... 
    from VIEW_ABC 
    where STRING_COL IN ('AA','BB',...,'ZZ')
Run Code Online (Sandbox Code Playgroud)

sql oracle performance

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