我看着MERGE看起来很酷的命令,但仍需要指定列.我正在寻找类似的东西:
MERGE INTO target AS t
USING source AS s
WHEN MATCHED THEN
UPDATE SET
[all t.fields = s.fields]
WHEN NOT MATCHED THEN
INSERT ([all fields])
VALUES ([all s.fields])
Run Code Online (Sandbox Code Playgroud)
可能吗?
我想详细了解SQL教我的那一刻,我目前试图进行一些简单的销售使用报告SUM,COUNT,AVG和GROUP BY一个SQL Server 2008数据库中的功能.我已经设法按行获得每组的总数,计数和平均值.
如何按行获取所有组的总计?
SQL到目前为止:
SELECT
SUM(dbo.tbl_orderitems.mon_orditems_pprice) AS prodTotal,
AVG(dbo.tbl_orderitems.mon_orditems_pprice) AS avgPrice,
count(dbo.tbl_orderitems.uid_orditems_prodid) AS prodQty,
dbo.tbl_orderitems.txt_orditems_pname
FROM
dbo.tbl_orderitems
INNER JOIN
dbo.tbl_orders
ON (dbo.tbl_orderitems.uid_orditems_orderid = dbo.tbl_orders.uid_orders)
WHERE
dbo.tbl_orders.uid_order_webid =
<cfqueryparam cfsqltype="cf_sql_integer" value="#session.webid#">
AND dbo.tbl_orders.txt_order_status =
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.sale_status#">
GROUP BY
dbo.tbl_orderitems.txt_orditems_pname
Run Code Online (Sandbox Code Playgroud)
Product Qty Gross Avg Westbury Climbing Frame 17 8,023.00 471.94 Sandpoint Deluxe Climbing Frame 34 36,146.00 1,063.12 Roseberry Climbing Frame 9 7,441.00 826.78 Ridgeview Texas Climbing Frame 10 6,990.00 699 Selwood …
我正在研究SQL SERVER 2008和2008 R2.如何在多用户模式下重命名数据库?我使用sp_rename但它返回此错误:
Msg 15225,Level 11,State 1,Procedure sp_rename,Line 338
似乎TIMESTAMP信息以某种方式加密,其中日期/时间数据以某种方式以二进制编码.我只是想发现今天修改过的所有行.
我收到此错误:
消息195,级别15,状态10,行
1'fnParseName'不是可识别的内置函数名称.
在这个查询:
SELECT fnParseName(DOCTORFIRSTNAME+' ' +DOCTORLASTNAME)
FROM [PracticeandPhysician]
Run Code Online (Sandbox Code Playgroud)
这是fnParseName的代码
create FUNCTION [dbo].[fnParseName]
(@FullName NVARCHAR(128))
RETURNS @FullNameParts TABLE (FirstName NVARCHAR(128),
Middle NVARCHAR(128),
LastName NVARCHAR(128))
AS
BEGIN
... function body that populates @FullNameParts ...
RETURN
END
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
我有一张大约20列的桌子.打字除外:
Where column1 is null OR column2 is null OR column3 is null etc...
Run Code Online (Sandbox Code Playgroud)
有没有更快捷的方法来检查每一列,看看是否有任何值为空,如果是,返回该记录?
我正在使用SQL Server 2008 r2.我想找到一种方法来验证SQL Server代理是否正在运行.我怀疑代理没有运行,但我不知道如何检查.
如何在SSMS中为表格自动生成CRUD存储过程?
数据类型的nodes()方法是否按xml文档顺序返回节点?
例如,如果有以下数据:
declare @xml xml
set @xml = '<Fruits><Apple /><Banana /><Orange /><Pear /></Fruits>'
Run Code Online (Sandbox Code Playgroud)
被查询为
select T.c.query('.')
from @xml.nodes('/Fruits/*') T(c)
Run Code Online (Sandbox Code Playgroud)
元素将按文档顺序返回吗?select如果order by省略了子句,则返回的行的顺序是未定义的.是这样的select ... from ... .nodes(),还是特殊的?
在某些情况下,是否可以在以下查询的输出中获取非空行集:
declare @xml xml
set @xml = '<Data><Element OrderNo="1" /><Element OrderNo="2" />'
+ '<Element OrderNo="3" /><Element OrderNo="4" />'
+ '<Element OrderNo="5" /></Data>'
select * from (
select T.c.value('.', 'int') OrderNo1,
row_number() over (order by @@spid) OrderNo2
from @xml.nodes('/Data/Element/@OrderNo') T(c)) sq
where OrderNo1 != OrderNo2
Run Code Online (Sandbox Code Playgroud) 我有下表:tblFile

我想要的输出:

我将许多行连接成一个文本字符串; 但是,我无法正确分组.现在代码只显示FileNameString字段中的每条记录:AAA,BBB,CCC,DDD,EEE,FFF
任何有关分组的建议!
SELECT FileID, Stuff(
(SELECT N', ' + CONVERT(Varchar, FileName)
FROM tblFile FOR XML PATH(''),TYPE )
.value('text()[1]','nvarchar(max)'),1,2,N'')AS FileNameString
From tblFile
GROUP BY FileID
Run Code Online (Sandbox Code Playgroud)