-1

最大の有効期限を見つけるクエリを作成しようとしていますが、これを行っているときに気付いたのは、有効期限が16年12月30日である場合、結果が得られないことです。 2099 年 1 月 1 日の有効期限 (何も入力されていない場合のデフォルトの日付) 以下は私のクエリです。

SELECT 
 Part,
 price,
 effective_date,
 expiration_date
FROM a.Table 
 WHERE Part IN ('&Part') 
 AND PRICE  IN ('somewere') 
 AND expiration_date IN (SELECT 
                          MAX(expiration_date) 
                          FROM table  
                          WHERE expiration_date > SYSDATE 
                          AND  part IN ('&Part)  
                          AND PRICE IN (Somewere)) 
 AND to_date(effective_date) IN (SELECT 
                                  MAX(EFFECTIVE_DATE) FROM b.table  
                                  WHERE expiration_date > SYSDATE 
                                  AND  Part IN ('&Part)  
                                  AND price  IN (somewere) 
                                  AND EFFECTIVE_DATE < SYSDATE + 1)

複数のサーバーの Powershell Get_EventLog

私は SQL DBA であり、Powershell の経験がなく、現在はシステム管理の任務を負っています。

エラーと警告について、サーバー全体でエラー ログをクエリする必要があります。

私自身の Google-fu とこのスレッドの助けを借りて、これを機能させることができました。

 $computers = Get-Content "C:\Servers\ServerList_Short.txt"; 

# QUERY COMPUTER SYSTEM EVENT LOG
foreach($computer in $computers)

{        
     Get-EventLog -ComputerName $computer -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-7) `
     | Select-Object -Property machineName, EntryType, EventID, TimeGenerated, Message `
     | Format-Table -Property MachineName, TimeGenerated, EntryType, Source,  Message -AutoSize ;

}

現時点で欠けているのは、オフラインの .txt ファイルでサーバーをトラップし、それを無視して次のファイルに移動する方法です。その後、これらすべてを SQL テーブル、results.txt などにダンプする作業を行います。

助けてくれてありがとう:)]

ケビン3NF

4

1 に答える 1

0

ROW_NUMBER を使用します。https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm

クエリは次のとおりです。

SELECT
    part
    ,price
    ,effective_date
    ,expieration_date
FROM (
    SELECT
        part
        ,price
        ,effective_date
        ,expieration_date
        ,ROW_NUMBER() OVER (PARTITION BY part ORDER BY expieration_date DESC) AS "row"
    FROM @tbl
    WHERE effective_date < SYSDATE + 1
    ) tbl
WHERE "row" = 1

これは、@tbl に入力するために使用したものです。

DECLARE @tbl TABLE (
part NVARCHAR(MAX)
,price FLOAT
,effective_date DATETIME2(3)
,expieration_date DATETIME2(3)
)

INSERT @tbl (part, PRICE, EFFECTIVE_DATE, EXPIERATION_DATE)
VALUES ('Apples',7.95,'2016-12-01','2016-12-30')
    ,('Apples',7.95,'2016-11-01','2016-11-30')
    ,('Apples',7.95,'2016-12-30','2099-01-01')
于 2016-12-02T20:25:44.360 に答える