0

ロギング用のテーブルがあります。このテーブルには、datetime 型の列があります。最新の日次記録を選択するにはどうすればよいですか? 誰か助けてくれませんか?

ありがとう!

アップデート! このテーブルには、InventoryNr、SerialNr、Oldusername、OlduserId、oldcostcenter、newusername、newuserid、newcostcenter、changedby、changedate の列があります。

ここで、デバイスが自動的に挿入されます。そのため、コンピューターでモニターが検出されると、このテーブルに記録されます。ただし、モニターを別のPCに移動すると、もう一度記録されます。ただし、場合によっては、モニターが 2 台の PC 間を「ジャンプ」することがあります。そしてPCも同じです。PC の所有者が変更された場合は、ここに自動的に挿入されます。したがって、このクエリを実行すると、デバイスからの最新の行のみが必要になります。私が何を意味したかを理解していただければ幸いです。

ありがとう!

4

3 に答える 3

1

いつ発生したかに関係なく、最後の 20 行を取得するには:

SELECT TOP (20) cols FROM dbo.LoggingTable ORDER BY EventDate DESC;

今日発生したすべての行を降順で取得するには:

SELECT cols FROM dbo.LoggingTable
  WHERE EventDate >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
  ORDER BY EventDate DESC;

今日発生した限り、最後の 20 行のみを取得するには (つまり、20 行未満を取得できます):

SELECT TOP (20) cols FROM dbo.LoggingTable
  WHERE EventDate >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
  ORDER BY EventDate DESC;

列に数式を適用しないことを強くお勧めします。

于 2012-07-23T14:26:53.610 に答える
0

これを試して:

select yourFields from yourTable
group by yourFieldDate,yourOtherFields
having yourFieldDate= MAX(yourFieldDate)
于 2012-07-23T14:25:20.600 に答える
0

SQL 2008 を使用している場合は、次のことができます。

SELECT * FROM Table WHERE TimeStamp > CAST(GETDATE() AS DATE) ORDER BY TimeStamp DESC

于 2012-07-23T14:28:33.563 に答える