【发布时间】:2016-04-26 05:34:31
【问题描述】:
我有两张桌子 表 1 是这样的
ID Repeats
-----------
A 1
A 1
A 0
B 2
B 2
C 2
D 1
表 2 如下所示
ID values
-----------
A 100
B 200
C 100
D 300
使用视图我需要这样的结果
ID values Repeats
-------------------
A 100 NA
B 200 2
C 100 2
D 300 1
这意味着,我想要独特的 ID、values 和 Repeats。 Repeats 值应该在有多个 values 而不是单个 ID 时显示 NA 并且它应该显示 Repeats 值以防repeats 有单个值。
最初我需要显示repeats 的最大值,所以我尝试了以下视图
ALTER VIEW [dbo].[BookingView1]
AS
SELECT bv.*, bd2.Repeats FROM Table1 bv
JOIN
(
SELECT distinct bd.id, bd.Repeats FROM table2 bd
JOIN
(
SELECT Id, MAX(Repeats) AS MaxRepeatCount
FROM table2
GROUP BY Id
) bd1
ON bd.Id = bd1.Id
AND bd.Repeats = bd1.MaxRepeatCount
) bd2
ON bv.Id = bd2.Id;
这会返回正确的结果,但是在尝试实现CASE 时,它无法返回唯一的ID 结果。请帮忙!!
【问题讨论】:
标签: sql sql-server join filtering