我正在尝试编写一个查询,该查询将返回每个州的前5个销售额,并提供借款人姓名和净合计。我已经提出了以下方法来做这项工作,但是,我相信有更好的方法,特别是如果添加了一个新的州。
我试着去理解WHERE IN语法,但是我不能理解。如果有任何帮助,我将不胜感激。
SELECT TOP 5 data.DebtorNameShort, data.State, data.NetTotal
FROM data
WHERE State= "VI"
ORDER BY NetTotal DESC
UNION ALL
SELECT TOP 5 data.DebtorNameShort, data.
我需要得到每个地区,市场和名称的前10名的结果,以及那些最高的计数(差距)。有4个区域,有1到N个市场。我可以获得前10名,但如果不使用每个市场的联盟,我就不知道如何做到这一点。关于如何做到这一点有什么想法吗?
SELECT DISTINCT TOP 10
Region, Market, Name, Gaps
FROM
TableName
ORDER BY
Region, Market, Gaps DESC
我有一个按VersionNumber DESC排序的表的最后3行的CTE。我如何对它们进行反向排序,以使这3个数据中最小的VersionNumber始终具有显示顺序1? Microsoft SQL Server...中没有LIMIT ... ;WITH cte AS
(
SELECT
BSId, RevisedBSId, VersionNumber,
RANK() OVER (ORDER BY VersionNumber DESC) AS [DisplayOrder]
FROM
cte
),
sortedc
我需要优化下面的查询
SELECT
Id, -- identity
CargoID,
[Status] AS CurrentStatus
FROM
dbo.CargoStatus
WHERE
id IN (SELECT TOP 1 ID
FROM dbo.CargoStatus CS
INNER JOIN STD.StatusMaster S ON CS.ShipStatusID = S.SatusID
WHERE CS.CargoID=CargoS
我有一个名为StateChanges (190万行)的大型表,它来自一个第三方应用程序,该应用程序包含以下数据:
[ComponentID] : integer : Id of what changed
[NewStatus] : integer : How it changed (0: OK, 1: Error, 2:Warning)
[ConsoleTimeStamp] : timestamp, index : When it changed.
我需要在两个日期之间显示一组组件的状态变化。这是相当微不足道的。然而,我以这种方式显示我的数据:
[OldStatus] --> [New
select id,date,amount,SUM (Amount) OVER (PARTITION BY ID ORDER BY DATE desc) AS runningbalance from sales
我已经尝试过这样做,从最新的记录到较旧的记录来逆转运行平衡。我如何才能反转到相反的方向,让我的跑步保持平衡?
我希望通过创建集群列存储索引将行存储表转换为列存储表。表中有三列: id、时间和值。
在创建列存储索引之前,按id和时间对表进行排序;但是,在创建列存储索引之后,行顺序就会混乱。我认为这可能是由于并行性,并添加了maxdop = 1选项,但这并没有解决问题。有人能帮我吗?
下面是创建表和索引的代码:
-- creating rowstore table
drop table if exists tab1_rstore
select id, time, value
into tab1_rstore
from tab0
order by id_loan, period
option(maxdop
现在,我定制了用于获取特定数据查询,从我想要获取前一行数据的数据中
我尝试了这个查询,但它得到了错误
SELECT Data_date -(SELECT * FROM [x].[dbo].[JSON_SOURCE] WHERE Data_date <= (SELECT TOP(1) Data_Date
FROM [x].[dbo].[JSON_SOURCE]
where ([Actual_cumulative] != null OR LTRIM(RTRIM([Actual_cumulative])) !='')
AND ([Early_Variance_
我是MongoDB的新手,我正在尝试将现有的DB2查询转换为MongoDB。我使用Java来运行这个查询。
当前DB2查询:
SELECT * FROM
(SELECT MBI.*, ROW_NUMBER() OVER Order by PDATE DESC AS rownumber
FROM USER1.COLLECTION1 MBI, USER1.COLLECTION2 IC
WHERE MBI.VISIBILITY = 1 and MBI.MBOXID = '1234'
AND UPPER(MBI.MBOXITID) >= '123
在特定的字段中,我只想用2的值来选择一个表。就像吼叫一样。我有一张桌子,通常每分钟有两个值。但是有一段时间,每分钟有两个以上的值,我按降序选择。避免这一点,我想要字段的分钟值[TimeStamp]可以按2项的降序分组,当有超过2个值时跳过。
SELECT TOP 10
dbo.ConRadVacuum.[TimeStamp],
dbo.ConRadVacuum.Tag,
dbo.ConRadVacuum.[Value]
FROM
ConRadVacuum
ORDER BY
[TimeStamp] DESC
我希望“选定的行”(32分钟)只能选择两行,就像其他行一样
我正在尝试显示前100名报告客户中每个客户的前5种事件类型,但我不能将结果限制为每个客户5种事件类型。
SELECT
a.[customer],
a.[incident type],
COUNT(a.[incident type) AS Subcount
FROM [Table] a
JOIN
(
SELECT TOP 100
[Contract],
[customer],
COUNT([customer]) AS CustomerCount
FROM
[table]
WHERE
...
GROUP BY [customer], [contract]
ORDER BY Customer
在其他一些数据库中(例如DB2或带有ROWNUM的Oracle ),我可以在排序函数的OVER()子句中省略ORDER BY子句。例如:
ROW_NUMBER() OVER()
当与有序派生表一起使用时,这一点尤其有用,例如:
SELECT t.*, ROW_NUMBER() OVER()
FROM (
SELECT ...
ORDER BY
) t
如何在Server中进行模拟?我已经发现有人在使用 ,但这是错误的,因为对于派生表的顺序,它的行为是不确定的:
-- This order here ---------------------vvvvvvvv
SELECT t.*
抱歉,如果这有点长的话...我正在从SQL 2012数据库在report Builder 3中构建一个报告,以显示磁盘空间检查的结果列表。检查每两分钟运行一次,因此很明显它会返回大量重复的结果。有没有办法只返回当磁盘空间发生变化时显示的结果?下面是我正在使用的查询和它得到的结果
SELECT V.iValue AS 'Result', V.iDate AS 'Date/Time'
FROM DataValues V
WHERE idate BETWEEN @StartDate AND @EndDate ORDER BY iDate DESC
Date/T
在我的应用程序中,我使用此select在一个月内获取数据:
select e.id, e.date, e.local_currency_id, e.rate, e.downloaddate
from exchange_rates e
join (select local_currency_id, max(date) as max_date
from exchange_rates group by local_currency_id, date_trunc('month', date)) as m_date on e.date = m_date.max_date
where e.
我正在尝试编写一个查询来获取带有maxdate的行。
经过研究,我发现以下查询应该可以工作:
SELECT OrgSeatID, CreateDate, T.ROW
FROM (SELECT OrgSeatID, CreateDate, ROW_NUMBER() OVER(PARTITION BY OrgSeatID ORDER BY CreateDate DESC) AS [ROW]
FROM OrgSeat) AS T
WHERE T.[ROW] = 1
但是,它返回所有行,没有按其应该的方式对CreateDate DESC进行排序,并且ROW列为所有行读取1。
有人能看到我在
到目前为止,我的代码如下:
select top 200 employees,phone_no,address,job_code
from from employee
where code IN ('BA', 'QA', 'BI')
因此,我希望生成的结果是BA的前200个结果,然后是QA的前200个结果和BI的前200个结果。因此,它应该填充的记录总数将是600。当前代码将仅填充200。我可以执行联合命令,但它很冗长。在这种情况下寻找有效的解决方案。
我正在尝试在ms sql server中对结果进行分页,但我在获取正确结果时遇到了一些问题。我想要达到与mysql的限制相同的结果,我正在尝试使用这个模型来实现:
SELECT * FROM (
SELECT TOP x * FROM (
SELECT TOP y fields
FROM table
WHERE conditions
ORDER BY table.field ASC) as foo
ORDER by field DESC) as bar
ORDER by field ASC
来自:
列出前30行的
我知道我可以使用ORDER BY对一列数据进行排序,但我希望使用ORDER BY对两列进行排序,并将结果显示在一个表视图中。
我试着使用逗号分隔列表,但这并不是我希望的那样。我希望它对两列进行排序,而不依赖于必须位于特定位置的行。
SELECT * FROM top_5_films ORDER BY position DESC;
我希望对这两列数据进行排序,而不是将字段绑定到行。
我有一个表格,如下
Rate Effective_Date
---- --------------
5.6 02/02/2009
5.8 05/01/2009
5.4 06/01/2009
5.8 12/01/2009
6.0 03/15/2009
我应该找到在当前日期及之后有效的所有汇率。因此,为了获得当前的有效利率,我使用
SELECT TOP 1 * from table
where effective_date < '05/05/2009'
order by effective date desc
对于当前日期之后的汇率,查询为
SELECT * f
有一个有3列的表: ID、签名和日期时间,它是按签名分组的,其计数(*)> 9。
select * from (
select s.Signature
from #Sigs s
group by s.Signature
having count(*) > 9
) b
join #Sigs o
on o.Signature = b.Signature
order by o.Signature desc, o.DateTime
我现在只想选择第一和第十记录,每个签名。决定排名的是日期时间的下降。因此,我希望每个签名都有2行。
谢谢,
我正在尝试优化查询,使其运行得更快。查询如下:
SELECT grp_fk_obj_id, grp_name
FROM tbl_groups as g1
CROSS APPLY (SELECT TOP 1 grp_id as gid
FROM tbl_groups as g2
WHERE g1.grp_fk_obj_id = g2.grp_fk_obj_id
ORDER BY g2.date_from DESC, ISNULL(date_to,
我试图在Server 2008中使用UNION操作符合并以下两个查询的结果,但得到了以下错误
关键字'union‘附近的语法不正确。
我的代码:
SELECT TOP 1
CITY, LEN(CITY)
FROM
table1
ORDER BY
LEN (CITY), CITY ASC
UNION
SELECT TOP 1
CITY, LEN(CITY)
FROM
table1
ORDER BY
LEN (CITY) DESC, CITY ASC
如有任何意见,将不胜感激。
谢谢
我试图从以下查询中仅获得具有max(id)的max(effdt)的和(Comprate),
SELECT id, employee_code, effdt, comprate
FROM dbo.employees_compensation
WHERE (employee_code = '000321514')
ORDER BY effdt desc, id desc
以上查询结果如下:
id employee_code effdt comprate
1473433 000321514 201
我有一个有很多行的表格。它被编入了索引。我经常做的一个操作是从这个表中随机选择一条记录。为此,我使用以下SQL语句:
SELECT TOP 1 *
FROM
( SELECT TOP (@RecNo) * FROM Table ORDER BY Date ASC ) AS subquery1
ORDER BY
Date DESC ;
其中@RecNo是随机数。查询需要花费大量时间才能运行,这令人恼火。有什么想法可以在这里优化吗?
例如,考虑一下SQL查询:
SELECT
A.[Name],
ROW_NUMBER() OVER(ORDER BY A.[Name] ASC)
FROM
[FooTable] AS A
在这里,我观察到由A.名字排序的结果。如果我将ROW_NUMBER函数中定义的排序列更改为另一列,则结果再次按该列排序。
我期望将行号分配给这些行,但我并不期望这些行会按照相同的条件进行排序。这仅仅是查询执行方式的一个副作用(在Server 2008 R2上是我的例子),还是这种行为得到了保证?(我发现没有提到这种担保)。
我正在使用Server 2008 R2表。我正在收拾桌子。这些表包含了客户个人数据列表,以及最后一次看到客户的时间。我想要一份顾客名单,但是有重复的。请考虑我的下表:
CustomerID LastSeen FirstName LastName
--------------------------------------------
000030059 19971209 Jane Doe
000118444 20010210 Jane Doe
000000001 20100402 Marie Dote
00
我开始尝试使用ASP.NET MVC,遇到了想要做一些基本分页的问题。因此,我使用这个简单的Linq语句(使用Northwind数据库)来获取特定页面的10个项目:
var q = (from p in db.Orders
orderby p.OrderDate descending
select p).Skip(currentPage * pageAmount).Take(pageAmount);
它工作得很好,但是当我调试时,我很好奇Linq to Sql生成的实际SQL是什么。下面是输出:
SELECT
我有下表: ID | Plate | RecordedAt
| |
| | 对于每个车牌,我可以有N条记录。 我正在使用以下查询: SELECT TOP 1 *
FROM table
WHERE table.Plate IN ('plate1', 'plate2', 'plate3')
ORDER BY c.Recordedat DESC 问题是这个查询只返回所有列表的一条记录。 我需要列表中每个项目的前1个。 有没有办法只用一个查询就能做到这一点呢?
我需要一个在列值上“中断”的sql server结果集,但是如果我在排名函数中按该列排序,我真正需要的顺序就会丢失。这最好用例子来解释。我目前正在试验的查询是:
select RANK() over(partition by Symbol, Period order by TradeDate desc)
SymbSmaOverUnderGroup, Symbol, TradeDate, Period, Value, Low, LowMinusVal,
LMVSign
from #smasAndLow3
然后返回:
Rnk Symbol TradeDate Period Val
我刚接触SQL,我想知道是否可以在不先使用SELECT TOP然后使用ORDER BY的情况下选择底部n行。
我可以找到许多模仿SELECT TOP的例子&然后是ORDER BY,比如,但是我需要以相反的顺序对数据进行排序,所以使用ORDER BY并不理想。
下面的查询返回我需要传递给其他程序的数据点,但现在数据以与预期相反的方向排序,并导致问题。
SELECT TOP 504
date
,price
FROM
[dbo].[AssetRet]
WHERE
asset = 'SP500'
ORDER BY
date DESC
我可以通过在remove TOP上添
上下文:
I有一个在主页上显示帖子和评论的应用程序。我的意图是限制显示的帖子数量(即10个帖子)和.限制每个帖子显示的评论数量(即,2条)前端评论总数(即“阅读所有10条评论”)
MySQL:
(SELECT *
FROM (SELECT *
FROM post
ORDER BY post_timestamp DESC
LIMIT 0, 10) AS p
JOIN user_profiles
ON user_id = p.post_author_id
LEFT JOIN (S
我正在尝试生成一个脚本,该脚本获取某个id的第二行。我的第一个查询是正确的。然而,当我试图列出一个ID的列表时,我只得到了一个结果。
我的更新查询应该调整什么以允许显示多个结果?
原始查询
;WITH YourTable AS(
SELECT TOP 2
EHistory.*,
ROW_NUMBER() over (order by SignonDate desc) as RowNumber
FROM
EHistory
LEFT JOIN ESh
我有这样的SQL查询
SELECT TOP 1
ROW_NUMBER() OVER (ORDER BY column_date DESC) AS ROWID, *
FROM
table_report
WHERE
column_date = datepart(year,date)
如果我错了,请纠正。我想取日期时间开始的年份,然后按年选择前1行。
我有一个疑问:
SELECT * FROM TABLE1 WHERE KEY_COLUMN='NJCRF' AND TYPE_COLUMN IN ('SCORE1', 'SCORE2', 'SCORE3') AND DATE_EFFECTIVE_COLUMN<='2016-09-17'
结果我得到了12次记录(行)。
如何获得每个DATE_EFFECTIVE_COLUMN最接近TYPE_COLUMN的结果?在这种情况下,如何获得每种类型最接近生效日期的三条记录?
更新:如果我只需要检查一种类型的话,我可以使用
我想从SQL Server中的DB中选择最新的记录。如果只选择一项,则最终输出如下:
SELECT TOP(10) * from dbo.Eventos WHERE Tipo LIKE '%OS%' AND Distrito LIKE '%'
总是在结尾加上:
ORDER BY Data DESC
注意::Distrito LIKE '%'必须保持不变,因为有时它会被编程地更改为%以外的其他东西。
如果选择了更多的项,则查询将以编程方式为每个项添加一个UNION行。最后,将一如既往地添加ORDER BY。选中所有4个项的示例:
SE
我有一个活动的注册表格,比如
name | signup_date
--------------------
Maria | 2016-02-24
Maria | 2016-02-24
Maria | 2016-02-24
David | 2016-02-25
David | 2016-02-25
George | 2016-02-26
有可能有人不止一次注册,这是预期的行为。
我需要能够选择和订购,以便我可以得到所有唯一的记录与所有的副本之后。基本上,如果你多次注册,我想先以一种独特的方式检查所有的名字,然后再复制。我不知道如何在一个查询中完成这个任务。
预期的结果应该如下所示