不工作:
SELECT
count(*),
sum(a_metric_1),
a_fld_1
FROM
(
SELECT
sales AS a_metric_1,
product AS a_fld_1
FROM
bi_sales
) sel1
INNER JOIN (
SELECT
TOP 10 product AS b_fld_1
FROM
bi_sales
GROUP BY
product
ORDER BY
sum(sales) DESC
) sel2 ON sel1.a_fld_1 = sel2.b_fld_1
GROUP BY
a_fld_1
ORDER BY
a_fld_1
中工作。
工作:SELECT
TOP 10 product AS b_fld_1
FROM
bi_sales
GROUP BY
product
ORDER BY
sum(sales) DESC
我需要使用带有顺序和顶部功能的派生表运行SQL。因为我使用开发软件来生成PHP代码,所以这是一个RAD。因此,用户应告知您自己的SQL,可以简单或复杂。 想象“ SEL1”可能是另一个与Join的SQL复合体,Case ...
,我们将用户SQL视为“ SEL1”。我们在“ SEL2”中使用最高顺序回复,然后在“ SEL1”和“ SEL2”中使用比较连接进行新的外部选择。 Sybase不起作用:
SELECT column FROM ( SELECT top 10 column2 FROM table ORDER BY column2 )
在MS SQL Server,MySQL,Oracle,MS Access,PostgreSQL,SQLite,Firebird和Informix上的同一语句工作。 提前感谢您的答复!
在您的情况下,也许这可以做您想要的:
SELECT TOP 10 product AS b_fld_1, SUM(sales), COUNT(*)
FROM bi_sales
GROUP BY product
ORDER BY sum(sales) DESC;
它更简单。
我想,您应该在最外部查询
移动订单。 SELECT A.column FROM ( SELECT top 10 column2 FROM table ) A
ORDER BY A.column2
据我所知,在T-SQL(最有可能的Sybase)中,您不能在子问题中使用子句,派生表和视图,除非使用顶部N 例如,以下查询将导致t-sql中的错误消息:
选择顶级1 p.firstname,p.lastname,(从教育中选择e.title e 其中p.id = e.personid Order by e.startdate desc)'lasteducationlevel' 来自人Pnover将成功执行此操作:
SelectP.Firstname,P.LastName,(从教育中选择顶级1 e.title e 其中p.id = e.personid Order by e.startdate desc)'lasteducationlevel' 来自人P