我使用的是sql server 2014,我有一个表(t1),其中包含超过25000行的6个数字的列表。
t1摘录如下:
Id F1 F2 F3 F4 F5 F6
1 5 11 15 21 30 36
2 8 10 21 25 32 39
3 10 18 23 27 28 32
...
我想写两个案例陈述,可以做到以下几点:
(1) 标记6个数字(f1到f6)中最后一个数字至少出现一次或多次的行,显示为“是”(否则为“否”)
(2) 给出所有数字的计数(基于上述条件(1)),否则给出零
这就是我期望的输出:
Id F1 F2 F3 F4 F5 F6 LastDigit CountLastDigit
1 5 11 15 21 30 36 Yes 4
2 8 10 21 25 32 39 No 0
3 10 18 23 27 28 32 Yes 2
...
我被困在写两个案例陈述背后的逻辑。任何帮助都将不胜感激。
3条答案
按热度按时间k97glaaz1#
横向连接似乎是正确的方法。作为工作的一部分,我将进行汇总:
这是一把小提琴。
brjng4g32#
这是个有趣的问题。你可以通过横向连接来完成。其思想是将数字列拆分为行,按最后一位进行聚合,并只保留最常出现的数字。然后只需要添加一点条件逻辑:
db小提琴演示:
如果要对顶部关系的计数求和,则需要在子查询中再进行一级聚合:
oipij1gg3#
请尝试以下操作:
请在这里找到小提琴。