首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jet-SQL到TSQL

Jet-SQL到TSQL
EN

Stack Overflow用户
提问于 2016-08-18 13:15:51
回答 2查看 64关注 0票数 1

在MS Access 2010中,我有以下代码:

代码语言:javascript
复制
SELECT 
    [Teile-LF-Beziehungen].Lieferant, 
    COUNT([Teile-LF-Beziehungen].Lieferant) AS [Anz Teile], 
    First([Teile-LF-Beziehungen].Name) AS Name
FROM
    [Teile-LF-Beziehungen]
GROUP BY 
    [Teile-LF-Beziehungen].Lieferant
ORDER BY 
    COUNT([Teile-LF-Beziehungen].Lieferant) DESC;

我想把这个查询放到Server中,因为MS应该只是前端。

但是在Server中,我不能在视图中使用ORDER。但是为什么呢?我不明白。我想在Server中使用的代码:

代码语言:javascript
复制
SELECT  
    [Lieferant],
    COUNT([Lieferant]) AS [Anz Teile],
    MIN([Name]) AS [Name]
FROM
    [dbo].[VIEW_Teile-LF-Beziehungen]
GROUP BY
    [Lieferant]
ORDER BY 
    COUNT([Lieferant]) DESC;

我知道这不管用。但是,是否有任何方法来产生对Server查询(视图)的MS访问查询1:1?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-18 13:22:20

只有最外层的select才能使用order (但您可以声明一个TOP 100 percent来欺骗它)。因此,这是完全可以的,在视图不允许这样。

许多人认为,表有某种隐含的顺序(正如您看到的结果排序),但这是随机的。下一个电话可能会导致一个不同的排序。

还有一种将ROW_NUMBEROVER(ORDER BY)结合使用的方法。结果按此顺序传递,只要订单是按唯一值排序,订单就会得到保证。

编辑

抱歉我的第一次尝试是想快点。由于分组,不允许使用ROW_NUMBER

这应该是可行的:

代码语言:javascript
复制
SELECT tbl.Lieferant
      ,tbl.[Anz Teile]
      ,tbl.Name
      ,ROW_NUMBER() OVER(ORDER BY tbl.[Anz Teile] DESC) AS Sort
FROM
(
    SELECT  [Lieferant]
           ,COUNT([Lieferant]) AS [Anz Teile]
           ,MIN([Name]) AS [Name]
    FROM [dbo].[VIEW_Teile-LF-Beziehungen]
    GROUP BY [Lieferant]
) AS tbl;

EDIT2

这个SELECT可以放在a VIEW中,只需将CREATE VIEW YourViewName AS放在SELECT之前并执行。在此之后,您将能够执行一个SELECT * FROM YourViewName来获得一个排序列表。

正如许多地方所述:无论如何,最好的是最外层的ORDER BY

票数 1
EN

Stack Overflow用户

发布于 2016-08-18 13:19:40

ORDER BY在视图中不工作。如果在调用order by时不包括View,server可以自由返回他想要的行。

所以你需要

代码语言:javascript
复制
 SELECT *
 FROM yourView
 ORDER BY yourField

编辑:我是说如果你的观点是

代码语言:javascript
复制
CREATE VIEW yourView AS
    SELECT  
        [Lieferant],
        COUNT([Lieferant]) AS [Anz Teile],
        MIN([Name]) AS [Name]
    FROM
        [dbo].[VIEW_Teile-LF-Beziehungen]
    GROUP BY
        [Lieferant];

然后你就这样调用你的视图

代码语言:javascript
复制
 SELECT *
 FROM yourView
 ORDER BY [Anz Teile]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39019248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档