sql - 自加入:如何选择一组特定的数据
问题描述
我有一个简单的数据表
我们可以看到第 1 行和第 2 行包含完全相同的 ColumnA、ColumnB 和 ColumnC。我想形成一个简单的选择,可以忽略我们已经有一个是的'N'值,所以像
我尝试使用自加入,但猜测没有正确使用它或可能没有使用正确的东西。
有人可以在这里提出一点建议吗?
这就是我正在尝试的
SELECT
*
FROM
[Table] AS main
INNER JOIN [Table] AS sub ON
sub.columna = main.columna
and
sub.columnb = main.columnb
and
sub.columnc = main.columnc
WHERE
-- This is where I am struggling to add a condition:
((main.columnd = 'Y'
AND
sub.columnd = 'Y')
OR
(main.columnd = 'N'
AND
sub.columnd = 'Y'))
解决方案
我不确定您的真实数据是什么样的,但这里有一个简单的方法:
DECLARE @Table TABLE (
ColumnA VARCHAR(2), ColumnB VARCHAR(2), ColumnC VARCHAR(2), ColumnD VARCHAR(1)
);
INSERT INTO @Table ( ColumnA, ColumnB, ColumnC, ColumnD ) VALUES
( 'AA', 'BA', 'CA', 'Y' ), ( 'AA', 'BA', 'CA', 'N' ), ( 'BB', 'CD', 'DA', 'N' ), ( 'CC', 'GH', 'IJ', 'Y' );
SELECT
ColumnA, ColumnB, ColumnC, MAX ( ColumnD ) AS ColumnD
FROM @Table AS t1
GROUP BY
ColumnA, ColumnB, ColumnC;
退货
+---------+---------+---------+---------+
| ColumnA | ColumnB | ColumnC | ColumnD |
+---------+---------+---------+---------+
| AA | BA | CA | Y |
| BB | CD | DA | N |
| CC | GH | IJ | Y |
+---------+---------+---------+---------+
推荐阅读
- polygon - 无法使用 levelplot 将多边形叠加到栅格图层
- sensors - Labview 中的传感器 VL53L0X 与 MyRio
- api - 从 API 数据中 Flutter 多选 ListView
- haskell - Numeric.LinearProgramming 因堆栈构建而失败
- python - VSCode Python 扩展
- hololens - Holo Lens 2 模拟器虚拟键盘未显示在边缘浏览器中
- arrays - 在 fp-ts 和函数式编程中管理单子数组
- qt - 如何以 Grayscale8 格式在 QImage 上绘制某些颜色?
- sql-server - SQL Server 中的列存储索引(数据类型转换错误)
- javascript - 如何根据按钮类型改变模态内容?