小编Aar*_*etz的帖子

T-SQL连续组合行

我有一个如下所示的表格.我想要的是彼此连续的行被组合在一起 - 对于每个"ID".列IsContinued标记下一行是否应与当前行组合

我的数据如下:

+-----+--------+-------------+-----------+----------+
| ID  | Period | IsContinued | StartDate | EndDate  |
+-----+--------+-------------+-----------+----------+
| 123 | 1      | 1           | 20180101  | 20180404 |
+-----+--------+-------------+-----------+----------+
| 123 | 2      | 1           | 20180501  | 20180910 |
+-----+--------+-------------+-----------+----------+
| 123 | 3      | 0           | 20181001  | 20181201 |
+-----+--------+-------------+-----------+----------+
| 123 | 4      | 1           | 20190105  | 20190228 |
+-----+--------+-------------+-----------+----------+
| 123 | 5      | 0           | 20190401  | 20190430 |
+-----+--------+-------------+-----------+----------+
| 456 | …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2016

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

Oracle SQL - 标识顺序值范围

这是我的表:

ID  Name      Department
1   Michael   Marketing
2   Alex      Marketing
3   Tom       Marketing
4   John      Sales
5   Brad      Marketing
6   Leo       Marketing
7   Kevin     Production
Run Code Online (Sandbox Code Playgroud)

我想找到ID范围Department = 'Marketing':

Range   From   To
Range1  1      3    
Range2  5      6
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

sql oracle

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

TSQL CASE当id.id为null然后''else'@'结束

在我的选择中,我使用这样的语句来添加第二个单元格(如果它不为空),并将单元格归零(如果它为null).

Child.Tag + '@' + ISNULL(CONVERT(varchar(50),parent.Tag),'') as 'Location'
Run Code Online (Sandbox Code Playgroud)

如果有父位置,则返回F123 @ A123的位置.但是如果没有父位置,它将返回F123 @,我希望它只返回F123.

我已将选择调整为:

Child.Tag + CASE Parent.Tag when null then '' else '@' end
Run Code Online (Sandbox Code Playgroud)

但是,如果父位置为空,则仍会返回F123 @.

有没有人知道如何让它停止返回'@',并且如果有人解释为什么我的CASE语句不起作用也会非常感激.

谢谢.

(其他信息:我在SSMS 2008上)

sql t-sql sql-server sql-server-2008

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

有条件地连续计数项目

要计算符合条件列表的行中的项目数,并将结果放置在该行的errorcnt列中。实际数据有15个条件和一百列。我认为此示例应说明我的追求。

CREATE TABLE #MyList
(
    Item1   NVARCHAR(100),
    Item2   NVARCHAR(100),
    date1   DATE,
    Date2   date,
    errorcnt int
)

INSERT INTO #MyList
  (
    Item1,
    Item2,
    Date1,
    Date2
  )
VALUES
('Dog','Puppy',   '2020-01-01', '2030-01-01'),
('Cat', 'Kitten', '2020-02-02', '2020-03-03')
Run Code Online (Sandbox Code Playgroud)

要计数的样本条件:

When Item1 <> Dog, OR 
when Item2 <> puppy, OR 
when Date2>date1
Run Code Online (Sandbox Code Playgroud)

每个记录都应计算在内,因此在记录2中,

Item1 <> Dog = 1
Item2 <> puppy = 1
Date 2 > Date 1 = 1
Total 3 errors.
Run Code Online (Sandbox Code Playgroud)

第2行的输出为:

Cat, Kitten, 2020-02-02, 2020-03-03, 3
Run Code Online (Sandbox Code Playgroud)

新手,不知道如何做到最好。

sql sql-server

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