识别2个关键字段组合的多个值

时间:2019-03-09 20:59:22

标签: multiple-records

我有一个Microsoft SQL Server 2017表,其结构类似于此:

id | i_id | item_name    | date1      | date2      | date3      | date4      | date5      |...
---+------+--------------+------------+------------+------------+------------+------------+---
 1 | 1234 | item_a       | 01/01/2019 | NULL       | 01/03/2019 | NULL       | NULL       |...
 1 | 1234 | item_a       | NULL       | 01/02/2019 | NULL       | 01/04/2019 | 01/05/2019 |...
 1 | 1234 | item_b       | 01/10/2019 | 01/12/2019 | NULL       | NULL       | NULL       |...
 1 | 1234 | item_b       | NULL       | NULL       | 01/15/2019 | NULL       | NULL       |...
 1 | 1234 | item_b       | NULL       | NULL       | NULL       | 01/22/2019 | 01/27/2019 |...
 2 | 1235 | item_a       | 02/01/2019 | NULL       | NULL       | NULL       | NULL       |...
 2 | 1235 | item_a       | 02/02/2019 | NULL       | NULL       | 02/07/2019 | NULL       |...
 2 | 1235 | item_a       | NULL       | NULL       | 02/05/2019 | NULL       | NULL       |...
 2 | 1235 | item_b       | 02/12/2019 | 02/14/2019 | 02/16/2019 | 02/20/2019 | 02/25/2019 |...
 2 | 1235 | item_b       | NULL       | NULL       | NULL       | NULL       | 02/26/2019 |...
 3 | 1236 | item_a       | 02/28/2019 | 03/01/2019 | NULL       | NULL       | NULL       |...
 3 | 1236 | item_a       | NULL       | NULL       | 03/03/2019 | NULL       | NULL       |...
 3 | 1236 | item_b       | NULL       | NULL       | NULL       | 03/05/2019 | NULL       |...
 3 | 1236 | item_b       | NULL       | NULL       | NULL       | 03/07/2019 | 03/10/2019 |...

我想找出一个日期(不一定是同一日期)出现在“ id”和“ i_id”的组合中。

例如,“ id” 1234的所有日期都可以,因为“ id”和“ i_id”的每种组合都有一个日期。但是,“ id” 1235在“ date1”列下有两个日期用于1235和item_a的组合。同样,“ id” 1235在“ date5”列下有2个1235和item_b组合的日期。最后,“ id” 1236在“ date4”列下有2个1236和item_b组合的日期。

我需要确定何时针对每个“ id”和“ i_id”组合出现这样的多个记录,并且更好的是,获得这种情况发生的次数的计数。如果我只列出每个“ id”和“ i_id”组合具有多个日期的记录,那将是理想的选择。

我仍在努力提高SQL技能,因此我不确定如何最好地构造已标识的多个记录中的列表,但可能是类似的表结构,其中仅列出了已标识的多个记录。

任何帮助将不胜感激!谢谢。

0 个答案:

没有答案