我有以下使用MS SQL从大表中提取的数据表。我试图通过每个策略只有一个SubmissionNo来获得我的最终结果。我希望应用以下条件的过滤器。任何帮助/想法将不胜感激!
条件1:当国家=美国,办公室='仅限美国地区 时,不会应用过滤器。
条件2:如果同一提交号码有多行,那么我需要检查国家/地区=美国和其他国家/地区(例如ID'和第3条记录),然后去办公室"并选择该Office的 ID 。
条件3:对于只有一行的任何非美国家/地区,请将相同的行添加到最终结果中。
查询:
从Table1中选择*
表
+---+------------+-------------+-----------------+
|ID | Office | Country | SubmissionNo |
+---+------------+-------------+-----------------+
| 1 | Toronto | Canada | 0121-01 |
| 2 | Atlanta | US | 0121-02 |
| 6 | Atlanta | US | 0121-04 |
| 3 | Toronto | Canada | 0121-032 |
| 5 | Toronto | US | 0121-032 |
| 9 | New York | Canada | 0121-05 |
| 8 | New York | US | 0121-05 |
+---+------------+-------------+---------------- +
预期结果
+---+------------+-------------+-----------------+
|ID | Office | Country | SubmissionNo |
+---+------------+-------------+-----------------+
| 1 | Toronto | Canada | 0121-01 |
| 2 | Atlanta | US | 0121-02 |
| 6 | Atlanta | US | 0121-04 |
| 3 | Toronto | Canada | 0121-032 |
| 8 | New York | US | 0121-05 |
+---+------------+-------------+---------------- +
答案 0 :(得分:0)
我认为你可以通过group by,count和sub查询等聚合函数在你的情况下做很多事情。你表达规则的方式可能是正确的,但不是非常友好的SQL。例如,查询如何知道哪些Office值位于美国?
select
from Table1 T1
join
(
select SubmissionNo,count(*)
from Table1
group by SubmissionNo
) T2
on T1.SubmissionNumber = T2.SubmissionNumber.