2016-07-22 10 views
-1

で異なる結果が得られます。グループによっては、私がこれを持っているSQL

しかし、私はこれを行う場合は、次の

SELECT ([Document No_]), [Shipment Date] 
FROM [Verploegen POC$Sales Line] 
--WHERE [Shipment Date] = '2014-05-08' 
GROUP BY [Document No_], [Shipment Date] 
--[Shipment Date] 
--[Document No_], 
HAVING COUNT(*) > 1 

それが返されます。

267661.は、どのようにそれをすることができますか?

SELECT ([Document No_]), [Shipment Date] 
FROM [Verploegen POC$Sales Line] 
WHERE [Shipment Date] = '2012-01-01' 

私は36件の結果を取り戻す:

は、私がこれを行う場合は

ありがとうございます。しかし、このように、ダブルスあります

V004180 2012-01-01 00:00:00.000 
V004182 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 
V066594 2012-01-01 00:00:00.000 

は、SO iを持つダブルスdelteしてみてください。しかし、このケースでは、ヘッダーを持つツリー結果(ユニークな値)だけを返す:document No_と出荷日?

SELECT ( [Document No_]), [Shipment Date], COUNT(*) as count 
FROM [Verploegen POC$Sales Line] 
WHERE [Shipment Date] = '2012-01-01' 
GROUP BY [Document No_], [Shipment Date] 


SELECT ( [Document No_]), COUNT(*) as count 
FROM [Verploegen POC$Sales Line] 
WHERE [Shipment Date] = '2012-01-01' 
GROUP BY [Document No_] 

それはまったく同じ結果

+2

erm ...異なるクエリなので、 – Tanner

+0

しかし、私はヘッダー出荷日として追加します。だから私は文書No_と出荷日を表示したい。 –

+0

データがどのように見えるかはわかりませんが、余分な列を使用してグループを分けている場合は、異なる数の結果が表示される可能性があります。 – Tanner

答えて

1

右を返します。

は、私がこれを行う場合は、あなたに

をありがとうございました!

2つの異なるクエリを実行しています。

のみDocument_No、二つのフィールド、Document_No出荷日

例えばて第2グループのためにより最初のグループ。

は、このDATASがあると:

Document No | Shipment Date 
    1  | 2015-01-01 
    2  | 2015-01-01 
    1  | 2016-01-01 

最初のクエリは、2行(文書番号によりグループ、第1及び第三行はcollpased 2行目)

2番目のクエリが返すを返します3行(Docvument NoとShipment Dateのグループは3つの異なる組み合わせです)。

興味深い質問は...あなたのテーブルでは、同じドキュメントナンバーの行がどのように増えていますか?なぜ同じ文書番号の出荷日が異なるのですか?

1

2つの異なるクエリがあるので、2つの異なる結果セットが驚くべきではありません。

生データ:本当に簡単な例では、あなただけのDocument Noによってグループ化、カウントを行う場合

Document No | Shipment Date 
----------------------------- 
    1  | 2016-07-22 
    1  | 2016-07-23 
    2  | 2016-07-22 

は、あなたが得るでしょう:

SELECT [Document No], COUNT(*) AS Count 
FROM T 
GROUP BY [Document No]; 

Document No | Count 
----------------------------- 
    1  | 2 
    2  | 1 

をだからあなたが唯一残されることになるHAVING COUNT(*) > 1を適用した後、 Document Noが1であるレコードで。

クエリに出荷日を追加する場合:

SELECT [Document No], [Shipment Date], COUNT(*) AS Count 
FROM T 
GROUP BY [Document No], [Shipment Date]; 

Document No | Shipment Date | Count 
-------------------------------------- 
    1  | 2016-07-22 | 1 
    1  | 2016-07-23 | 1 
    2  | 2016-07-22 | 1 

だから、あなたはあなたがいない行が残っているHAVING COUNT(*) > 1句を適用した後。これは、2番目のクエリが最初のクエリより少ない行を持つ理由です。

私は、オブジェクト名の作成を中止することを強くお勧めします。少し主観的です。私の意見では、パスカルの場合は問題ありません。DocumentNo[Document No_] 、はるかに簡単に書くことができます。非常に最悪の場合(私は好きではありませんが、普及していることを知っています)、単語を区切るスペースではなくアンダースコアを使用する必要がありますので、Document_Noになります。もちろん、あなたがこのシステムを継承していて、変更が遅すぎる場合は、少なくともあなたのクリスマスカードのリストからこれらのテーブルの元の作成者を取る必要があります!

+0

こんにちは、あなたの返信ありがとうございます。私は投稿を投稿しました –

+0

私の投稿を参照してください、はい –

+0

私は編集を見ましたが、私はまだあなたが何を求めているのか分かりません。私が説明したのは、列ごとに異なる場合に異なる結果が得られる理由の例です。あなたは正確に何をしようとしていますか、あなたはどんな問題を抱えていますか? – GarethD

関連する問題