【发布时间】:2021-03-23 19:55:39
【问题描述】:
我在视图上有这个选择:
SELECT
T1.ID AS [ID],
T1.A AS [A],
T1.B AS [B],
T4.C AS [C],
ISNULL(NULLIF(T3.D, ''), T2.D) AS [D],
T1.E AS [E],
T1.F AS [F],
T1.G AS [G]
FROM T1
INNER JOIN T2 ON T2.X = T1.X
INNER JOIN T3 ON T3.Y = T2.Y
RIGHT JOIN T4 ON T4.Z = T3.Z
然后得到这个:
║ ID ║ A ║ B ║ C ║ D ║ E ║ F ║ G ║
╠══════╬══════╬══════╬══════╬══════╬══════╬══════╬══════╬
║ 1 ║ 3 ║ 4 ║ 1000 ║ X ║ 1 ║ 1 ║ 1 ║
║ 1 ║ 3 ║ 4 ║ 2000 ║ Y ║ 1 ║ 1 ║ 1 ║
║ NULL ║ NULL ║ NULL ║ 3000 ║ NULL ║ NULL ║ NULL ║ NULL ║
我希望最后一行是这样的:
║ 1 ║ 3 ║ 4 ║ 3000 ║ Z ║ 1 ║ 1 ║ 1 ║
也就是说,除了“C”列和“D”列之外,所有列的值都等于其他行。 D列的值是从T2.D得到的
我该怎么办?谢谢。
【问题讨论】:
-
您需要进一步解释如何获取额外行的数据...例如Z从哪里来?
标签: sql sql-server join select view