Sql server 2012 sql中的内部联接表
我有两张桌子要连在一起 表A:Sql server 2012 sql中的内部联接表,sql-server-2012,inner-join,Sql Server 2012,Inner Join,我有两张桌子要连在一起 表A: +--------+-----------+---------+ | row_id | category | val_1 | +--------+-----------+---------+ | 1 | cat1 | 6.5 | | 1 | test | 6.5 | | 1 | dog1 | 2.1 | +--------+-----------+---------+ 表B
+--------+-----------+---------+
| row_id | category | val_1 |
+--------+-----------+---------+
| 1 | cat1 | 6.5 |
| 1 | test | 6.5 |
| 1 | dog1 | 2.1 |
+--------+-----------+---------+
表B:
+-----------+-----------+
| row_id | val_2 |
+-----------+-----------+
| 1 | 2.0 |
+-----------+-----------+
当我使用内部联接时,得到如下结果:
+-----------+-----------+-----------+------------+
| row_id | category | val_1 | val_2 |
+-----------+-----------+-----------+------------+
| 1 | cat1 | 6.5 | 2.0 |
| 1 | test | 6.5 | 2.0 |
| 1 | dog1 | 2.1 | 2.0 |
+-----------+-----------+-----------+------------+
+-----------+-----------+-----------+------------+
| row_id | category | val_1 | val_2 |
+-----------+-----------+-----------+------------+
| 1 | cat1 | 6.5 | 2.0 |
| 1 | test | 6.5 | NULL |
| 1 | dog1 | 2.1 | NULL |
+-----------+-----------+-----------+------------+
但我不想重复Val_2的结果。我想要这样的结果:
+-----------+-----------+-----------+------------+
| row_id | category | val_1 | val_2 |
+-----------+-----------+-----------+------------+
| 1 | cat1 | 6.5 | 2.0 |
| 1 | test | 6.5 | 2.0 |
| 1 | dog1 | 2.1 | 2.0 |
+-----------+-----------+-----------+------------+
+-----------+-----------+-----------+------------+
| row_id | category | val_1 | val_2 |
+-----------+-----------+-----------+------------+
| 1 | cat1 | 6.5 | 2.0 |
| 1 | test | 6.5 | NULL |
| 1 | dog1 | 2.1 | NULL |
+-----------+-----------+-----------+------------+
如果有人能帮助我,我将不胜感激。这行得通吗,迈克?这可能不是您所需要的,但您可以根据需要进行调整
SELECT
TABLE_A.*,
CASE ROW_NUMBER() OVER(PARTITION BY TABLE_B.val_2 ORDER BY TABLE_A.row_id DESC)
WHEN 1 THEN TABLE_B.val_2
ELSE NULL
END as val_2
FROM
TABLE_A
INNER JOIN
TABLE_B ON TABLE_A.row_id = TABLE_B.row_id
ORDER BY
TABLE_A.Row_id