大佬教程收集整理的这篇文章主要介绍了检查每列中存在哪些值(如果有),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表格,其列的标题是日期。每列(日期)都有一系列 ID,如下所示:
1 月 18 日 | fev/18 | 三月/18 日 | abr/18 | @H_784_7@mai/18jun/18 | 7 月 18 日 | 前/18 | set/18 | |
---|---|---|---|---|---|---|---|---|
0000019 | 0000020 | 0000021 | 0000022 | 0000023 | 0000024 | 0000025 | 0000026 | 0000027 |
0000017 | 0000018 | 0000019 | 0000020 | 0000021 | 0000022 | 0000023 | 0000024 | 0000025 |
0000016 | 0000017 | 0000018 | 0000019 | 0000020 | 0000021 | 0000022 | 0000023 | 0000024 |
0000011 | 0000012 | 0000013 | 0000014 | 0000015 | 0000016 | 0000017 | 0000018 | 0000019 |
0000015 | 0000016 | 0000017 | 0000018 | 0000019 | 0000020 | 0000021 | 0000022 | 0000023 |
0000010 | 0000011 | 0000012 | 0000013 | 0000014 | 0000015 | 0000016 | 0000017 | 0000018 |
0000002 | 0000003 | 0000004 | 0000005 | 0000006 | 0000007 | 0000008 | 0000009 | 0000010 |
0000009 | 0000010 | 0000011 | 0000012 | 0000013 | 0000014 | 0000015 | 0000016 | 0000017 |
0000018 | 0000019 | 0000020 | 0000021 | 0000022 | 0000023 | 0000024 | 0000025 | 0000026 |
0000004 | 0000005 | 0000006 | 0000007 | 0000008 | 0000009 | 0000010 | 0000011 | 0000012 |
0000007 | 0000008 | 0000009 | 0000010 | 0000011 | 0000012 | 0000013 | 0000014 | 0000015 |
0000003 | 0000004 | 0000005 | 0000006 | 0000007 | 0000008 | 0000009 | 0000010 | 0000011 |
0000008 | 0000009 | 0000010 | 0000011 | 0000012 | 0000013 | 0000014 | 0000015 | 0000016 |
0000014 | 0000015 | 0000016 | 0000017 | 0000018 | 0000019 | 0000020 | 0000021 | 0000022 |
0000001 | 0000002 | 0000003 | 0000004 | 0000005 | 0000006 | 0000007 | 0000008 | 0000009 |
0000006 | 0000007 | 0000008 | 0000009 | 0000010 | 0000011 | 0000012 | 0000013 | 0000014 |
0000005 | 0000006 | 0000007 | 0000008 | 0000009 | 0000010 | 0000011 | 0000012 | 0000013 |
0000012 | 0000013 | 0000014 | 0000015 | 0000016 | 0000017 | 0000018 | 0000019 | 0000020 |
0000013 | 0000014 | 0000015 | 0000016 | 0000017 | 0000018 | 0000019 | 0000020 | 0000021 |
我需要找出每一列中存在哪些 ID。例如,我知道 ID 000009 到 000019 出现在从 jan/2018 到 set/2018 的每一列中。
有没有办法列出 sql Server 2012 中每一列中存在的所有 ID?
使用 SQL Intersect 查找多个查询的共同结果,在这种情况下,将每一列作为单独的查询进行查询,然后将结果相交。
SELECT [jan/18] FROM table.data
INTERSECT
SELECT [fev/18] FROM table.data
INTERSECT
SELECT [mar/18] FROM table.data
INTERSECT
SELECT [abr/18] FROM table.data
INTERSECT
SELECT [mai/18] FROM table.data
INTERSECT
SELECT [jun/18] FROM table.data
INTERSECT
SELECT [jul/18] FROM table.data
INTERSECT
SELECT [ago/18] FROM table.data
INTERSECT
SELECT [set/18] FROM table.data
,
我倾向于使用 apply
来反透视数据然后聚合:
SELEct col
from t cross apply
(values (t.[jan/18],1),(t.[fev/18],2),. . .
) v(col,which)
group by col
having count(disTinct which) = 12;
与 intersect
相比,它的优势在于它只扫描表一次。 Intersect
删除重复项,这在性能上应该与 group by
类似——但是,我不确定一系列 intersect
是否将它们删除一次或 11 次。从性能角度来看,这似乎更安全。
以上是大佬教程为你收集整理的检查每列中存在哪些值(如果有)全部内容,希望文章能够帮你解决检查每列中存在哪些值(如果有)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。