小编pod*_*ska的帖子

分割字符串然后旋转结果

如果有一个从 .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)

sql t-sql sql-server parsing sql-server-2005

3
推荐指数
1
解决办法
1万
查看次数

oracle交叉口有无明显

我有以下查询:

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)

sql oracle query-optimization

2
推荐指数
1
解决办法
1463
查看次数

按范围分组记录

我需要选择落在某个范围内的项目数

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 sql-server postgresql

2
推荐指数
1
解决办法
1941
查看次数

Int数组和IN语句

如何在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)

sql sql-server

2
推荐指数
1
解决办法
2万
查看次数

如何在实体关系中显示sql联结表

实体关系假设:

  1. N Testplan有M Teststep.
  2. 1 Testplan有N截图

因此,我有一个TestplanTeststep表和一个Screenshot表相关的TestplanTeststep表.

问题:但我如何用ERD表达这个?

当我回顾第2点时,那么a Testplan有N 是不正确的Screenshots,因为a Testplan不能有Screenshots.实际上TestplanTeststep有N Screenshots,但是自然ERD的概念模型不是物理的(sql表).

再次提问:我如何用ERD表示a Screenshot属于a TestplanTeststep但不属于Testplan

erd entity-relationship entity-relationship-model

1
推荐指数
1
解决办法
374
查看次数

cte上的TSQL Maxrecursion

我收到此错误:

在语句完成之前,最大递归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

0
推荐指数
1
解决办法
4880
查看次数

计算所有条目的移动平均值

我有一个表,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,因为这样会很慢.

sql oracle

0
推荐指数
1
解决办法
1302
查看次数

应该是存储数组的字段的数据类型

我想在ms sql server中存储一个数组(例如20*20),那么应该是什么数据类型呢?该表是测试,字段是ID,焦点,名称.我想将数组存储在焦点字段中.请告诉我该怎么做

sql sql-server

0
推荐指数
1
解决办法
53
查看次数