我在这里使用SQL视图有一个简单的问题。我现在似乎无法弄明白。
简单地使用SELECT DISTINCT似乎是使用两个字段的组合来确定区别。
有什么想法吗?
这是当前返回所有行的SQL的模拟:
SELECT dbo.TableA.FieldA, dbo.TableB.FieldB
FROM dbo.TableA INNER JOIN dbo.TableB ON dbo.TableA.ID = dbo.TableB.TableAID
此标准查询返回的数据示例如下:
FieldA FieldB
John 78
John 21
Claire 18
Sam 16
John 25
Claire 48
Paul 53
我希望从查询中返回的内容是:
John 78
Paul 53
Claire 48
Sam 16
**已编辑以尝试使事情更清晰,并包含缺少的信息。
答案 0 :(得分:1)
如果表b中的字段A有两个不同的值,基于连接,你怎么知道使用哪一个?
你可以尝试这个,但它可能不会选择你想要的b值
SELECT dbo.TableA.FieldA, max(dbo.TableB.FieldA)
FROM dbo.TableA INNER JOIN dbo.TableB ON dbo.TableA.SomeID = dbo.TableB.SomeID
GROUP BY dbo.TableA.FieldA
答案 1 :(得分:1)
根据您的answer我认为您要做的是:
在TableB中汇总FieldB,然后将其与TableA连接。
SELECT TableA.FieldA,
tmp.SUMFieldB
FROM TableA
INNER JOIN
(SELECT TableAID,
SUM(FieldB) AS SUMFieldB
FROM TableB
GROUP BY FieldA
ORDER BY SUMFieldB DESC
) AS tmp
ON TableA.ID = tmp.TableAID
ORDER BY tmp.SUMFieldB DESC
答案 2 :(得分:0)
这个怎么样?
SELECT TableA.FieldA,
tmp.FieldB
FROM TableA
INNER JOIN
(SELECT TableAID,
FieldB
FROM TableB
GROUP BY FieldA
ORDER BY FieldB DESC
) AS tmp
ON TableA.ID = tmp.TableAID
ORDER BY tmp.FieldB DESC