我有以下数据表,该表是使用MS SQL从大型表中提取的。我正在尝试通过每个策略只有一个提交否来获得最终结果。我希望应用具有以下条件的过滤器。任何帮助/想法将不胜感激!
条件 1:当国家/地区 = 美国且 Office ="仅限美国位置">时,不会应用任何筛选器。
条件2:当有同一提交编号的多行时,我需要检查国家/地区=美国和其他国家/地区(例如ID的第3和第5条记录(,然后转到"办公室"并选择该办公室的ID。
条件 3:对于任何只有一行的非美国国家/地区,请选择同一行以获得最终结果。
查询:
从表 1 中选择 *,其中
桌子
+---+------------+-------------+-----------------+
|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 |
+---+------------+-------------+---------------- +
我认为您可以在使用分组依据、聚合函数(如计数和子查询(的情况下做很多事情。 你表述规则的方式可能是正确的,但对SQL不是很友好。 例如,查询如何知道哪些 Office 值位于美国?
select
from Table1 T1
join
(
select SubmissionNo,count(*)
from Table1
group by SubmissionNo
) T2
on T1.SubmissionNumber = T2.SubmissionNumber.