我正在尝试将表转换为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,但还没有喜悦.
谢谢,
加里
有没有人知道如何测量SQL Server 2008中特定数据库的每秒SQL事务数?
我不知道这是一个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 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可能意味着什么.
谢谢.
我从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'的默认架构,它仍然要求我附加架构名称以执行查询.
谢谢.
假设我有一个包含两列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是否足够智能以识别没有任何更改并且不需要写回磁盘?
我有一个表格,其中包含名为"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?
我需要从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)
看来这个查询没有返回最新值,可能是因为该组正在做一些我不想要的事情......
我有一个有三列的表:
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) 我手边没有"解释计划".你能帮忙说出以下哪项更有效率吗?
选项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)