我有一个看起来像这样的表:
AccountID, ItemID
1, 100
1, 200
2, 300
Run Code Online (Sandbox Code Playgroud)
我有一个proc接受一个表值参数,该参数更新与帐户关联的项目.我们将传递以下内容:
AccountID, ItemID
3, 100
3, 200
Run Code Online (Sandbox Code Playgroud)
proc类似于:
procedure dbo.MyProc( @Items as dbo.ItemListTVP READONLY )
AS
BEGIN
MERGE INTO myTable as target
USING @Items
on (Items.AccountId = target.AccountId)
AND (Items.ItemId = target.ItemId)
WHEN NOT MATCHED BY TARGET THEN
INSERT (AccountId, ItemId)
VALUES (Items.AccountId, Items.ItemId)
;
END
Run Code Online (Sandbox Code Playgroud)
根据传入的数据,我希望它能在表中添加2条新记录.
我想要的是有一个WHEN NOT MATCHED BY SOURCE子句,它将删除不匹配的指定帐户的项目.
例如,如果我通过
AccountID, ItemID
1, 100
1, 400
Run Code Online (Sandbox Code Playgroud)
然后我希望它删除1,200的记录; 但是留下所有其他人.
如果我这样做:
WHEN NOT MATCHED BY SOURCE THEN
DELETE; …Run Code Online (Sandbox Code Playgroud) 我有一个包含大约10个参数和大约10个数据集和一个数据源的报告.我打字很多,但我真的需要帮助所以我想我会尝试提供尽可能多的关于问题的信息,因为我可以从一开始.
让我们简化一切,并假装这些是所有内容的相关名称,并且报告获得基本的员工信息:
问题:
SSRS说viewOption不存在.但我在左侧的Parameters文件夹中看到了它.当我在参数下输入表达式时,我看到了它.参数!viewOption.value下没有波浪形的红线.但是,当我尝试将其作为getListOfNames数据集使用的参数的值时,它会出错.如果我把它放在getReportInfoOnSelectedPerson数据集中并以完全相同的方式使用它,SSRS就可以了.跆拳道?所以...我已经检查了rdl,一切都很好(声明了实际参数,在数据集引用中使用它,所有内容).它只是这一个数据集.我有一个类似的报告,使用相同的数据集,相同的基本参数和报告是好的.我尝试将dataset参数的值设置为1或者其他,这很好但是当我尝试将其设置为Parameter!viewOption.value时它出错.....现在,上面我说我通常传递存储的proc一个Join在带有波浪号的参数上〜但是我试图保持它简单,或者让它只是通常工作(通过传递多值viewOption参数的第一个值或将该参数转换为单个选择并且只是传递.但是连接也不起作用.所有这些都适用于其他数据集,这也是一个存储过程.
这是我的错误:
报告处理期间发生了错误.(rsProcessingAborted)查询参数"@viewOption"的Value表达式包含错误:表达式引用了报表参数集合中的不存在的参数.(rsRuntimeErrorInExpression)
这显然是说我的参数不存在,但我可以看到它...到处都是.如果我将其他数据集中的一个参数值分配给viewOption参数,则它可以正常工作而不会出现错误.我检查了rdl.
我之前遇到过这个问题,通过删除参数和数据集并再次创建它们来修复它(为了安全起见,我重命名了它们).这次没办法.
我很沮丧.请帮忙....
码?
<DataSet Name="getListOfNames">
<Fields>
<Field Name="personID">
<DataField>PersonId</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="name">
<DataField>name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>myDataSource</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>getListOfNames</CommandText>
<QueryParameters>
<QueryParameter Name="@fac">
<Value>=join(Parameters!fac.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@bldg">
<Value>=join(Parameters!bldg.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@unit">
<Value>=join(Parameters!unit.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@station">
<Value>=join(Parameters!station.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@startDate">
<Value>=Parameters!startDate.Value</Value>
</QueryParameter>
<QueryParameter Name="@endDate">
<Value>=Parameters!endDate.Value</Value>
</QueryParameter>
<QueryParameter Name="@viewOption">
<Value>=Join(Parameters!viewOption.Value, "~")</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<ReportParameter Name="viewOption"> …Run Code Online (Sandbox Code Playgroud) 在SQL Server 2005上,我试图查询此select语句
SELECT AlarmEventTransactionTableTable.TxnID,
CASE AlarmEventTransactions.DeviceID
WHEN DeviceID IN( '7', '10', '62', '58',
'60', '46', '48', '50',
'137', '139', '142', '143', '164' )
THEN '01'
WHEN DeviceID IN( '8', '9', '63', '59',
'61', '47', '49', '51',
'138', '140', '141', '144', '165' )
THEN '02'
ELSE 'NA'
END AS clocking,
AlarmEventTransactionTable.DateTimeOfTxn
FROM multiMAXTxn.dbo.AlarmEventTransactionTable
Run Code Online (Sandbox Code Playgroud)
它返回以下错误
消息156,级别15,状态1,行4关键字"IN"附近的语法不正确.
请给我一些关于我的代码可能出错的建议.
我听说在某些编程语言中检查字符串的长度是否0比检查内容是否更快"".这对T-SQL也是如此吗?
样品:
SELECT user_id FROM users WHERE LEN(user_email) = 0
Run Code Online (Sandbox Code Playgroud)
与
SELECT user_id FROM users WHERE user_email = ''
Run Code Online (Sandbox Code Playgroud) SQL 2016具有一项新功能,可将SQL Server上的数据转换为JSON.我很难将对象数组合成值数组,即
示例 -
CREATE TABLE #temp (item_id VARCHAR(256))
INSERT INTO #temp VALUES ('1234'),('5678'),('7890')
SELECT * FROM #temp
--convert to JSON
SELECT (SELECT item_id
FROM #temp
FOR JSON PATH,root('ids'))
Run Code Online (Sandbox Code Playgroud)
结果 -
{
"ids": [{
"item_id": "1234"
},
{
"item_id": "5678"
},
{
"item_id": "7890"
}]
}
Run Code Online (Sandbox Code Playgroud)
但我希望结果如下 -
"ids": [
"1234",
"5678",
"7890"
]
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?
RESTRICT可防止删除引用的行.NO ACTION表示如果在检查约束时仍存在任何引用行,则会引发错误; 如果您未指定任何内容,则这是默认行为.(这两个选择之间的本质区别在于,NO ACTION允许将支票延迟到交易的后期,而RESTRICT则不会.)
让我们检查一下.创建父表和子表:
CREATE TABLE parent (
id serial not null,
CONSTRAINT parent_pkey PRIMARY KEY (id)
);
CREATE TABLE child (
id serial not null,
parent_id serial not null,
CONSTRAINT child_pkey PRIMARY KEY (id),
CONSTRAINT parent_fk FOREIGN KEY (parent_id)
REFERENCES parent (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
Run Code Online (Sandbox Code Playgroud)
填充一些数据:
insert into parent values(1);
insert into child values(5, 1);
Run Code Online (Sandbox Code Playgroud)
并且测试确实被检查了:
BEGIN;
delete from parent where id = 1; -- violates foreign …Run Code Online (Sandbox Code Playgroud) 我知道一些基本的sql,但这个超出了我.我看起来高低但没有骰子.我需要查看以下数据,我可以在应用程序层代码中执行此操作.但不幸的是,对于这个特定的代码,代码必须放在数据层中.
我正在使用T-SQL.
表
Date Crew DayType
01-02-11 John Doe SEA
02-02-11 John Doe SEA
03-02-11 John Doe SEA
04-02-11 John Doe HOME
05-02-11 John Doe HOME
06-02-11 John Doe SEA
Run Code Online (Sandbox Code Playgroud)
我需要这样的观点
DateFrom DateTo Name DayType
01-02-11 03-02-11 John Doe SEA
04-02-11 05-02-11 John Doe HOME
06-02-11 06-02-11 John Doe SEA
Run Code Online (Sandbox Code Playgroud)
不幸的是,应用层需要基表格格式为show.这可以在查询中做到吗?
谢谢
卢克
我想对包含大量数据的表应用分页。我只想知道比在 SQL Server 中使用 OFFSET 更好的选择。
这是我的简单查询:
SELECT *
FROM TableName
ORDER BY Id DESC
OFFSET 30000000 ROWS
FETCH NEXT 20 ROWS ONLY
Run Code Online (Sandbox Code Playgroud) 使用"可重复读取"应该可以产生幻像读取,但是如何?我需要它作为一个教学CS学生的例子.
我认为我必须在非索引字段x上创建"SELECT ... WHERE x <= 888",上限888不存在,然后在另一个连接上插入一个值低于888的新行.
除了它不起作用.我需要一张非常大的桌子吗?或者是其他东西?
我可以更换的 = 与声明LIKE一个整数?
通过例如.是以下相同的事情:
select * from FOOS where FOOID like 2
// and
select * from FOOS where FOOID = 2
Run Code Online (Sandbox Code Playgroud)
我宁愿使用LIKE而不是=因为%当我没有FOOID过滤器时我可以使用...
SQL Server 2005.
编辑1 @Martin

sql ×8
sql-server ×7
t-sql ×3
case-when ×1
database ×1
json ×1
merge ×1
mysql ×1
pagination ×1
parameters ×1
performance ×1
postgresql ×1
sql-like ×1
ssrs-2008 ×1