0

テーブルには、Contract_number,RevenueおよびCust_nameの3つの列があります。 Contract_numberでグループ化して、その契約の総収入を得るには、SUM(Revenue)にしたいと思います。次に、Cust_nameを表示して、その契約のもとにいる顧客を示したいとします。SQL Server:集計する場合、特定の列に対して1行の値を選択します。

特定の契約のもとで、Cust_nameの値が複数あるという問題があります。コントラクトの下にあるCust_nameの値はすべて非常に似ていて、どれが使用されているかは気にしません。そのうちの1つを表示したいだけです。

MIN(Cust_name)のようなものを使用するとデータが失われ、GROUP BY Cust_nameにすると値が複数の行に分割されます。

Contract_numberRevenueの集約関数を同じに保ちながら、それぞれの結果に単一のCust_name値を追加する方法はありますか?

+0

利用MAX(CUST_NAME)の3つの列のような – Dimitri

+0

以上の行 – maSTAShuFu

+1

むしろ**ノーマライズ**あなたのテーブル、なぜあなたは1つのContract_Numberに似たCust_Namesをたくさん持っていますか? –

答えて

1

私はあなたがより良いと思う一緒にSUMで使用MIN(CUST_NAME)またはMAX(CUST_NAME)(収益)その後、GROUP BY Contract_number

SELECT Contract_number, 
     SUM(Revenue), 
     MIN(Cust_Name) -- or MAX(Cust_Name) 
    FROM table 
GROUP BY Contract_number 
+1

ありがとう、これは働いた。私のクエリは実際にサブクエリも含んでいます。サブクエリでMINを使用すると結果は失われましたが、メインクエリのみを置くと完全に機能しました。フェルディナンドありがとう! – esafresa

関連する問題