1

私は、analysedCopy と呼ばれる 1 つのテーブルからデータを取得し、それを使用して別のテーブルのすべての情報を上書きします。私がソート/フィルタリング/操作している列は、readings_miu_id、ReadDate、ReadTime、RSSI です。私は現在、readings_miu_id と ReadDate の一意のペアごとに最後の時刻 (ミリタリー時間にフォーマットされているため、ReadTime の最大値) のみを取得する次の SQL を使用して、analysedCopy からanalyzeed にデータを移動しています。

SELECT readings_miu_id, Reading, ReadDate, ReadTime, MIUwindow, SN, Noise, RSSI, ColRSSI,MIURSSI,Firmware,CFGDate,FreqCorr,Active,MeterType,OriginCol,ColID,Ownage,SiteID,PremID, prem_group1, prem_group2,ReadID  
    INTO analyzed  
    FROM analyzedCopy AS A  
    WHERE  ReadDate BETWEEN #04/21/09# AND #04/29/09#  AND ReadTime=  (SELECT TOP 1 analyzedCopy.ReadTime FROM analyzedCopy  
    WHERE analyzedCopy.readings_miu_id = A.readings_miu_id  AND analyzedCopy.ReadDate = A.ReadDate  
    ORDER BY analyzedCopy.readings_miu_id, analyzedCopy.ReadDate, analyzedCopy.ReadTime DESC)

   ORDER BY A.readings_miu_id, A.ReadDate, A.ReadTime DESC ; 

readings_miu_idこのコードに、目的の日付範囲を表示するように変更しながら、テーブルごとに 1 つのレコードを「分析」する機能を追加する必要がありReadDateます (この場合、「4/21/09 から 4/29 のようなものを表示する必要があります」)。 /09") また、それぞれの RSSI の値の平均を取り、DISTINCT reading_miu_idその平均 RSSI を分析されたテーブルの RSSI フィールドに挿入します。

要約/概要を説明するために、一意の ReadDate の組み合わせReadTimeごとに最高の別のテーブルからすべてのレコードをテーブルに挿入するコードがあります。readings_miu_idそして、このコードに、既にソートされた (前の文のステップ) レコードの平均 RSSI を取得し、その平均を分析済みの RSSI に挿入し、日付範囲を分析済みに挿入する機能を追加する必要がありますReadDate

私はおそらくここで多くのことを求めていることを認識しています.2つまたは3つの異なるステップまたはSQLコードを使用する必要がある場合は問題ありません. これが入っているプログラムは多くの人に使われることはないだろうし、私の上司はコードが乱雑であろうと、実行に少し時間がかかることであろうと気にしない. 私は物事を非効率で面倒なことを強いられることにうんざりしていますが、それは私がしなければならないことです.

sum()そこにある機能を使用して RSSI 値を合計することができるはずですが、合計をそれぞれのカウントで除算し、DISTINCT readings_miu_idこのデータに対して必要な他のすべてのことを実行しながら、その方法がわかりません。VB.NET 2008 と sqlServer を使用すると、論理ステートメントを使用して各行を実行し、データに対して必要なことを実行できますが、SQL または VBA でそれを行う方法がわかりません。


編集:

説明が不十分な場合はお知らせください。できる限り情報を修正し、追加するよう努めます。

4

1 に答える 1

0

一度に 1 つの問題に取り組みます。AnalyzedStep1、AnalyzedStep2 など、各ステップのテーブルを作成します。

于 2009-05-20T20:14:03.270 に答える