如果有一个从 .Net 应用程序传递的字符串,如下所示
2023|F66451,1684|648521,1684|600271,2137|019592
Run Code Online (Sandbox Code Playgroud)
我已开始使用下面的方法解析字符串,但我需要透视从 Split (用 * 包围)函数返回的数据,以便插入到 #tmpExceptions 表中
DECLARE @ExceptionsList as nvarchar(MAX)
SET @ExceptionsList = '2023|F66451,1684|648521,1684|600271,2137|019592'
SET NOCOUNT ON;
DECLARE @CurrentLineItem as nvarchar(255)
CREATE TABLE #ParsePassOne
(
LineItem nvarchar(255)
)
CREATE TABLE #tmpExceptions
(
AccountNumber int,
ClaimNumber nvarchar(50)
)
INSERT INTO #ParsePassOne
SELECT value FROM Split( ',' ,@ExceptionsList)
WHILE EXISTS(SELECT LineItem FROM #ParsePassOne)
BEGIN
SELECT TOP 1 @CurrentLineItem = LineItem FROM #ParsePassOne
*******
SELECT value FROM Split( '|' ,@CurrentLineItem)
*******
DELETE FROM #ParsePassOne WHERE LineItem = @CurrentLineItem …Run Code Online (Sandbox Code Playgroud) 我有以下查询:
select id from t1
intersect
select id from t2
intersect
select id from t3
Run Code Online (Sandbox Code Playgroud)
id在某些表中可能不是唯一的,所以我需要使用distinct.
总的来说更好的是:
select distinct id from (
select id from t1
intersect
select id from t2
intersect
select id from t3)
Run Code Online (Sandbox Code Playgroud)
要么
select distinct id from t1
intersect
select id from t2 -- here id is unique
intersect
select distinct id from t3
Run Code Online (Sandbox Code Playgroud) 我需要选择落在某个范围内的项目数
create table numbers (val int);
insert into numbers(val) values (2), (3), (11), (12), (13), (31);
select count(1) as qty , val / 10 as range
from numbers
group by val / 10;
Run Code Online (Sandbox Code Playgroud)
显然,如果范围内没有项目,它将不会包含在输出中.我可以想到一些不太优雅的方法来包含输出中的所有范围,但是有一个优雅而快速的方法(在PostgreSQL或MS SQL Server方言中)
如何在SQL Server中声明int数组?
填写之后,我想在IN语句中使用它来检查,我该如何更改我的代码?
declare @mode int =1
declare @acceptedFormTypeIds table (id int)
case @mode
when 1 then
insert into @acceptedFormTypeIds(id) values (1, 2, 3, 4)
when 2 then
insert into @acceptedFormTypeIds(id) values (1, 3)
when 3 then
insert into @acceptedFormTypeIds(id) values (2, 4)
else
insert into @acceptedFormTypeIds(id) values (1, 2, 3, 4)
end
...
WHERE
tFRM.SendDate between @datefrom and @dateto
and tFRM.TemplateId IN @acceptedFormTypeIds.id
Run Code Online (Sandbox Code Playgroud) 实体关系假设:
因此,我有一个TestplanTeststep表和一个Screenshot表相关的TestplanTeststep表.
问题:但我如何用ERD表达这个?
当我回顾第2点时,那么a Testplan有N 是不正确的Screenshots,因为a Testplan不能有Screenshots.实际上TestplanTeststep有N Screenshots,但是自然ERD的概念模型不是物理的(sql表).
再次提问:我如何用ERD表示a Screenshot属于a TestplanTeststep但不属于Testplan?
我收到此错误:
在语句完成之前,最大递归100已用尽
当我运行这个功能时:
WITH allDays AS (
SELECT @DateEarly AS date
UNION ALL
SELECT DATEADD(dd, 1, date) as date
FROM allDays s
WHERE DATEADD(dd, 1, date) <= @DateLate
)
SELECT *
from allDays
where dbo.isFestivo(date)>0
Run Code Online (Sandbox Code Playgroud)
我试图附加这个选项:
OPTION (MAXRECURSION 200);
Run Code Online (Sandbox Code Playgroud)
但我在"选项"字之前得到一个错误156.你知道为什么吗?
t-sql sql-server stored-procedures sql-server-2012 sql-server-2012-express
我有一个表,Measures与列:timestamp(Unix时间戳)tag,value.要获得15天的单一移动平均线,我可以做类似的事情:
SELECT tag,avg(value)
FROM measures
WHERE tag='xtr'
AND timestamp<1353304800
AND timestamp>1350622800
GROUP BY tag;
Run Code Online (Sandbox Code Playgroud)
现在我想获得150个最新行的移动平均值,但我不确定如何查询它.
SELECT t, s,avg(bv)
FROM
(SELECT A.timestamp as t,A.tag as ta,A.value as ac, B.timestamp as tb,B.value as bv,
FROM measures
CROSS JOIN measures B
WHERE A.tag='xtr' AND B.tag='xtr'
GROUP BY A.tag) WHERE ROWNUM <= 150;
Run Code Online (Sandbox Code Playgroud)
这显然是错误的,但我一直在思考它并且无法弄明白.有任何想法吗?我的思路是,我需要将每个条目与其下方的150个条目相匹配,并计算value这150个条目的平均值.我也很确定没有a可能有更好的方法CROSS JOIN,因为这样会很慢.
我想在ms sql server中存储一个数组(例如20*20),那么应该是什么数据类型呢?该表是测试,字段是ID,焦点,名称.我想将数组存储在焦点字段中.请告诉我该怎么做