WITH
sequenced_data AS
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY ECode ORDER BY TotalNrShare) AS sequence_id
FROM
myView
)
SELECT
*
FROM
sequenced_data
WHERE
sequence_id = 1
但是,这应提供与示例查询相同的结果。这只是完成同一件事的另一种方法。
但是,当您说出问题时,请您详细说明出什么问题了吗?是TotalNrShare
真正的字符串,例如?这会搞乱您的订购 _(等等MAX()
)_吗?
即使以上代码与您的sql Server不兼容,也不应将其完全崩溃。您应该只会收到一条错误消息。尝试执行Select * By Magic
,例如,它应该给出一个错误。我强烈建议您查看和/或重新安装Management Studio。
在替代方案方面,您可以执行此操作…
SELECT
*
FROM
(SELECT ECode FROM MyView GROUP BY ECode) AS base
CROSS APPLY
(SELECT TOP 1 * FROM MyView WHERE ECode = base.ECode ORDER BY TotalNrShare DESC) AS data