请帮助如何用逗号分隔字符串中的单词
例如:for 'abcdef'
输出: 'a,b,c,d,e,f'
如果永远不会工作.总是陷入其他条件.我已调试并检查@nextapprover不为null.
IF (@nextApprover != NULL)
BEGIN
UPDATE CallWatching
SET EmployeeNo = @employeeNo
WHERE @SRFID = MasterCode;
INSERT INTO CallForwarding (
MasterCode
,EmployeeNo
,ApproverNo
,IsForwarded
,ForwardBy
)
VALUES (
@SRFID
,@EmployeeNo
,@nextApprover
,0
,@EmployeeNo
)
END
ELSE
BEGIN
UPDATE CallWatching
SET STATUS = 1
WHERE @SRFID = MasterCode;
END
Run Code Online (Sandbox Code Playgroud) 在下面的示例中,每次运行代码块时,列"SecondColumn"和"ThirdColumn"将始终更新.'FirstColumn'将更新为存储在变量中的值@NumberOfRows(只要它> 0).
我遇到的问题是当@NumberOfRows0或更小时,'FirstColumn'将被设置为NULL.
是否可以调整此值,以便if @NumberOfRows为0或更小,那么'FirstColumn'根本不更新而不是将列设置为NULL?
DECLARE
@NumberOfRows INT = 0
,@NewValue DATETIME = GETDATE()
,@Other INT = 99
BEGIN
UPDATE x
SET x.FirstColumn = (CASE WHEN @NumberOfRows > 0 THEN @NewValue END)
,x.SecondColumn = SYSDATETIMEOFFSET()
,x.ThirdColumn = @Other
FROM TestTable x
WHERE x.ID = 100
END
Run Code Online (Sandbox Code Playgroud) 我在使用LEAD/LAG时遇到了一些问题.对于一组ID中的每一行,我想获得isAQI = 1的上一个/下一个源.在prevAQI和nextAQI列中,所需的输出如下所示.
我在sql server中尝试过与Lag()相同的方法,但没有运气.任何帮助将非常感激!
样本数据如下:
DECLARE @a TABLE ( id int, timest datetime, source char(2),
isAQI int, prevAQI char(2), nextAQI char(2))
INSERT @a VALUES
(6694 ,'2015-06-11 08:55:06.000' ,'I' ,1, NULL, 'A'),
(6694 ,'2015-06-11 09:00:00.000' ,'A' ,1, 'I', 'I'),
(6694 ,'2015-06-11 09:11:49.000' ,'C' ,NULL, 'A', 'I'),
(6694 ,'2015-06-11 09:29:06.000' ,'O' ,NULL, 'A', 'I'),
(6694 ,'2015-06-11 09:29:06.000' ,'DT' ,NULL, 'A', 'I'),
(6694 ,'2015-06-11 09:34:11.000' ,'DT' ,NULL, 'A', 'I'),
(6694 ,'2015-06-11 09:34:11.000' ,'O' ,NULL, 'A', 'I'),
(6694 ,'2015-06-11 …Run Code Online (Sandbox Code Playgroud) 我上网了,例如2011年11月3日是星期四,2011年11月4日是星期五.我用过这个功能
SELECT datename (dw, 04-11-2011)在我的服务器上它说星期六而不是星期五.如何将其设置为正确显示?或者我错过了什么?
编辑:谢谢大家的意见.但是,大多数人都指出了我使用的格式,而不是它没有正确设置的事实.有人发布了这个链接(并认为删除了他的评论):https://msdn.microsoft.com/en-us/library/ms181598.aspx.
所以,我使用set datefirst 1并且在11月4日使用了select datename(dw, '2011-11-04')
我试图找到一种方法来连接表格的行,其下面有行.不知道这是否是一件事,但我想我会问.
Table A
Name StartDate EndDate
A 01/01/15 01/12/2015
B 31/01/15 01/03/2015
C 01/04/15 01/08/2015
D 21/07/15 01/05/2015
Run Code Online (Sandbox Code Playgroud)
我希望得到日期重叠的人.从示例中,A与B,C和D重叠,然后我需要AB,AC和AD,但也想忽略BA,CA和DA.
So the output from Table A should be:
A B
A C
A D
B D
C D
Run Code Online (Sandbox Code Playgroud)
现在,我正在加入桌子,但无法摆脱重复,即我的结果中既有AB又有BA.任何帮助将非常感激.提前致谢.
我正在尝试在服务器上的表中实现sumproduct(来自excel)。
select *
into #myTable2
from #myTable1
select
a,
b,
c,
d,
e,
(
select (c * e)/100*3423) from #myTable1 t1
inner join #myTable t2
on t1.b = t2.b
where b like 'axr%'
) as sumProduct
from #myTable1
Run Code Online (Sandbox Code Playgroud)
但这并不完全有效。无法发现错误,也许我只是累了或想念它。
编辑: 样本数据和所需结果
只提及重要的专栏
c e b a sumProduct
2 4 axr1 2012.03.01 2*4 + 3*8
3 8 axr3 2012.03.01 2*4 + 3*8
7 5 axr23 2011.01.01 7*5 + 3*2
3 2 axr34 2011.01.01 7*5 + 3*2
Run Code Online (Sandbox Code Playgroud)
EDIT2:我需要一些语法帮助。我正在尝试重写这一部分:
select (c * …Run Code Online (Sandbox Code Playgroud) sql sql-server sql-server-2008 window-functions sql-server-2012
我开始寻找产品更新,它只是扫描永远不会停止等待2个小时,没有所以我跳过这一步,然后转到下一个是安装设置文件,但它只是说"未启动"和绿色条只是移动和移动,没有任何错误或任何事情发生
我想知道什么时候需要在SQL Server中使用CLR功能.
有人说CLR主要用于完成T-SQL无法完成的任务.但我无法弄清楚T-SQL的一个很好的例子未能给我我的确切输出.
有人可以给我一个通过T-SQL无法实现的确切示例吗?
样品将非常感谢!
基本上我有一个包含1000行和三列的表.(表A)
我有一个200列的表,有100万条+记录.(表B)
我试图将表格B的1000行的三列替换为表A的那些.我已经阅读了很多解决方案,你可以从表A中插入表B ..但这没用,因为我会得到NULL我需要数据的其余197列.
因此,任务是从一个表替换某些列的行以选择另一个表的列.没有条件,只有顶行或任何你能想到的顺序都没问题.如果你能给出一个将ORDER BY考虑在内的答案,那就是奖金!非常感谢!
sql-server-2012 ×10
sql-server ×8
sql ×7
t-sql ×2
case ×1
database ×1
install ×1
join ×1
sqlclr ×1
ssms ×1