我刚刚做了一个SQL考试,我真的很难处理2个关于交易的问题,它已经提交了,所以这只是为了我的理智......这些问题的答案是什么?
对不起,如果这不应该在这里,或者这些应该是2个单独的问题.
1.
Employee X has a salary of 40,000
a. User A begins a transaction and updates employee X's salary to salary * 1.1
b. User B begins a transaction and updates employee X's salary to salary * 1.25
c. User A rolls back their transaction
d. User B commits their transaction
Run Code Online (Sandbox Code Playgroud)
什么是员工X的薪水?(我去了50,000,没有提到事务隔离级别)
2.脚本构建如下 -
a. Transaction start
b. Insert record into table 1
c. Create savepoint
d. Insert record into table 2
e. Rollback to the save point …
Run Code Online (Sandbox Code Playgroud) 我有一种情况,我试图从所有列中获取最后一个not null值.这里有一些数据用于演示目的.
测试数据
DECLARE @t TABLE (ID INT, Col1 INT, Col2 INT, Col3 INT, Dated DATETIME)
INSERT INTO @t VALUES
(1, NULL, 100 , NULL, '20131210'), --<-- Column2 from this row
(1, 20 , 200 , NULL, '20131209'), --<-- Column1 from this row
(1, 30 , NULL , 300 , '20131208'), --<-- Column3 from this row
(1, 40 , 400 , NULL, '20131207')
?????????????????????????????????????????????????????
? ID ? Col1 ? Col2 ? Col3 ? Dated ?
?????????????????????????????????????????????????????
? 1 ? NULL …
Run Code Online (Sandbox Code Playgroud) 我认为是一个相当简单的查询似乎比我预期的更棘手.
我有两张桌子.与一对多的关系.我想要做的是表2返回的任何记录,我希望它在一个单独的列中.我已经设法在以下查询中使用相对较小的数据并知道第二个表返回的内容.
样本数据
DECLARE @TABLE1 TABLE(UserID INT,Episode INT ,[Value] VARCHAR(100))
INSERT INTO @TABLE1 VALUES
(1, 1,'VALUE 1-1'),(1, 2,'VALUE 1-2')
DECLARE @TABLE2 TABLE(UserID INT,Episode INT ,[Details] VARCHAR(100))
INSERT INTO @TABLE2 VALUES
(1, 1,'Details 1'),(1, 1,'Details 2'),(1, 2,'Details 1'),(1, 2,'Details 2')
Run Code Online (Sandbox Code Playgroud)
简单加入
SELECT ONE.UserID
, ONE.Episode
, ONE.Value
, TWO.Details
FROM @TABLE1 ONE INNER JOIN @TABLE2 Two
ON ONE.UserID = TWO.UserID
AND ONE.Episode = TWO.Episode
????????????????????????????????????????????
? UserID ? Episode ? Value ? Details ?
????????????????????????????????????????????
? 1 ? 1 ? VALUE …
Run Code Online (Sandbox Code Playgroud) 我正在使用 SSMS 2008 R2,并且只是尝试将多行合并为一行。我认为这应该很简单,但目前它在每一行中重复数据。考虑:
create table test
(
Name varchar(30)
)
insert test values('A'),('B'),('C')
select * from test
select distinct Name, coalesce(Name + ', ', '')
from test
Run Code Online (Sandbox Code Playgroud)
我怎样才能重写它来实现一行:A,B,C
每当我使用ExpectException时,我收到以下错误:(还有一个ROLLBACK错误 - >当前事务无法提交,无法回滚到保存点.回滚整个事务.{Private_RunTest,140})
看来,由于RAISERROR,MSSQL已经执行了ROLLBACK,因此tSQLt正在尝试ROLLBACK.我裹着Private_RunTest下面的SELECT和SET语句与以下IF语句和它似乎解决问题.
IF ISNULL(@ExpectException,0) <> 1
BEGIN
SELECT @Msg = COALESCE(@Msg, '') + ' (There was also a ROLLBACK ERROR --> ' +
COALESCE(ERROR_MESSAGE(), '') + '{' +
COALESCE(ERROR_PROCEDURE(), '') + ',' +
COALESCE(CAST(ERROR_LINE() AS NVARCHAR), '') + '})';
SET @Result = 'Error';
END
Run Code Online (Sandbox Code Playgroud)
这真的是一个错误和/或一个适当的修复?
我想知道是否有任何函数或东西可以将SQL select查询结果转换为JSON字符串格式?
例如,SQL选择查询结果是,
current target
-----------------
500 1000
1500 2000
Run Code Online (Sandbox Code Playgroud)
JSON结果:
[{"current":500,"target":1000},{"current":1500,"target":2000}]
Run Code Online (Sandbox Code Playgroud)
任何想法都会有所帮助。
谢谢。
假设我在SQL表(Locations)中有一个字段,其值是以分号分隔的列表:
username1;username2;username3
Run Code Online (Sandbox Code Playgroud)
如果我说:
SELECT '''' + REPLACE(owners, ';', ''',''') + '''' FROM Locations WHERE ...
Run Code Online (Sandbox Code Playgroud)
我可以输出它:
'username1','username2','username3'
Run Code Online (Sandbox Code Playgroud)
...但我想要做的是在子查询中使用它:
SELECT * FROM Users WHERE UserName IN (
SELECT '''' + REPLACE(owners, ';', ''',''') + ''''
FROM Locations WHERE ...
)
Run Code Online (Sandbox Code Playgroud)
所以,基本上我希望该子查询的输出在IN()子句中充当字符串.这可能吗?
谢谢!
我正在制作以下格式的 SSRS 报告:
DIVISION
SECTOR
DEPARTMENT
Run Code Online (Sandbox Code Playgroud)
部门包含部门,部门包含部门,因此生成的报告变成如下所示。每个部门都显示一个数字,我想在部门列中显示每个部门的小计(通过添加所有部门),然后在最后显示部门的总和(通过添加所有部门或所有部门)。我如何显示这些总数?
Division1
Sector1 SUBTOTAL HERE (for e.g. 19,000)
Department1 10,000
Department2 9,000
Sector2 SUBTOTAL HERE (for e.g. 8,000)
Department3 8,000
Sector3 SUBTOTAL HERE (for e.g. 13,000)
Department4 10,000
Department5 1,000
Department6 2,000
TOTAL HERE (for e.g. 40,000)
Division2
Sector4 SUBTOTAL HERE (for e.g. 3,500)
Department7 3,500
TOTAL HERE (for e.g. 3,500)
Run Code Online (Sandbox Code Playgroud)
我的报告显示了所有部门、部门和部门,上面的数字如上(我使用的是组),但我如何显示小计和总计?
我有3个表: 表1 - "taxonomy_index"我们有4列(列是nid,tid,粘,创建)
表2 - "节点"我们有15列(列是nid,vid,类型等...)
表3 - "taxonomy_term_data",其中我们有6列(列是tid,vid,名称等..)
我想加入这3张桌子,还有一些条件.
我知道各个查询但我想将所有查询设置为一个并形成一个连接
查询1
SELECT count(*), tid
FROM taxonomy_index
GROUP BY tid HAVING COUNT(*) >3
Run Code Online (Sandbox Code Playgroud)
这个查询给了我两个值,一个是count,另一个是tid.即tid使用了多少次.
查询2
select *
from node
where type='book' OR type='student'
OR type='teacher' OR type='class';
Run Code Online (Sandbox Code Playgroud)
在这里,我将获得与这些内容类型相关联的节点.
我想加入3个表.在输出中,我想知道每个tid使用了多少次(查询1)和类型(查询2),并从taxonomy_term_data获取tid名称.
计数,tid,命名给定类型的位置