2017-05-30 10 views
-1

私は答えを探し回っていますが、私はこの問題のために1つを見つけることができません。ランダムなアカウントX個アカウント。しかし、私は2つではなく1つのSQLクエリにこれらの2つを組み合わせることを望みます。だから、特定の時間範囲のトランザクションデータを取り戻して、重複したアカウントを取り戻さないようにし、重複していないアカウントからそのリストからX個のランダムなアカウントを選択する必要があります。重複を取り除き、ランダムな結果を取り除くSQLクエリ

現在、これは私が持っているクエリです:

SELECT TOP 75 [Account] 
FROM table 
ORDER BY NEWid() 

私はそこにDISTINCT入れて試してみましたが、私はそれを置くための適切な場所を見つけることができません。

今、はい、私はすべてこれをExcelで行うことができます。ただし、プロセスを自動化して迅速化するために、SQLを使用してこれを達成したいと考えています。あなたはTOP Xを除いて使用しているプラ​​ットフォーム言わない

+0

これはどのようにランダムですか? – Hogan

+0

あなたは正しいです。私はコード行を忘れてしまった。これはnewid()の命令です。これを指摘してくれてありがとう。 OPが編集されました。 –

+0

どのDBMSを使用していますか? –

答えて

0

は、私は、任意のプラットフォームの結果が返されないと思う、私はあなたがしかし、この

SELECT TOP 25 * 
FROM (
    SELECT DISTINCT [Account] 
    FROM table 
) x 

をしたいと思いMSSQL

ですあなたがDISTINCTを使用するときにランダムな順序で - 考えてみてください...あなたはそれを明確にするためにソートする必要があります。あなたはそれをランダムな順序にすることができるように

...

SELECT TOP 25 * 
FROM (
    SELECT DISTINCT [Account] 
    FROM table 
) x 
ORDER BY newid() 

しかし、これは遅くなります - それはあなたがこのランダム化トリックを使用していないその後、順番を気にしないだけということであれば。

+0

ありがとうございます。私は命令を気にしない、いいえ。それは私には大したことではありません。 しかし、私は上記のコードを試して、それは動作します(私は非常に満足しています)。私はもう少し小さな問題が出てきて、なぜ私は確信していません。ここでのコードは、現在ある: はFROM TOP 75 [アカウント] を選択( TRANSDATE> = '2017年5月1日' テーブル 区別[アカウント] を選択)NEWID(によって 順序をX) 問題は "where"ステートメントで起こっています。私は特定の日付範囲に基づいて引き戻されるデータを分離する必要があります。それについての示唆?再度、感謝します。 –

+0

私は余分な括弧が追加されていたので、問題のように見えます。今は正しく機能しています。答えをありがとう。 :) –

+0

@RyanWakefield - あなたは歓迎です - 幸運。 – Hogan

関連する問題