内部選択クエリを含む一種の大きなクエリがあります。私の目的は、すべてのレコードをフィールドコールの製品番号(一意ではなく、複数回表示される)でグループ化してから、日付でグループ化することです。2つの選択クエリの(名前)と(日付)によるグループ化
クエリの最後にOrder By日付を追加して正常に動作しているようです。クエリは、日付順にすべてのレコードを生成しましたが、レコードはProductNumberでグループ化されませんでした。ここで
データの視覚的なサンプルが、私はどのように私は列フィールドでグループ(ProductNumberだろう、出力はしたがって、次の
ProductId Manufacturer ProductNumber Date
1 Kellog H1 05/05/2017
5 Nestle H1 05/01/2017
8 Nutmeg H1 04/30/2017
10 Houston H1 04/15/2017
9 Highland H3 04/09/2017
11 Miami H3 04/12/2017
のように見えるように取得しようとしています
ProductId Manufacturer ProductNumber Date
1 Kellog H1 05/05/2017
5 Nestle H1 05/01/2017
8 Nutmeg H1 04/30/2017
9 Highland H3 04/09/2017
10 Houston H1 04/15/2017
11 Miami H3 04/12/2017
です)をグループ化し、日付順に並べ替えますか? このクエリでは、Order by Dateを追加しました。グループをProductNumberで追加すると、内部選択のすべてのフィールドをグループに追加するかどうかを尋ねるエラーメッセージが表示されます。自分のグループの選択で、実際にすべてのフィールド(実際のクエリには多くのフィールドがあります)が本当に必要ですか?よりよい解決策が必要です。ここで
は、私のクエリ(ちょうどサンプルが)あなたが本当に注文された「グループ化」と呼んでいる何
SELECT DISTINCT TOP 100 *,
FROM (SELECT DISTINCT NP.ManufacuturerId,
C.ManufacuturerName,
IR2.ProductNumber,
NP.Field1,
NP.Field2,
NP.Field3,
NP.Field4,
CN.C2Date CN.CompanyNotificationId,
NPR.NotificationProcessName,
Cast(NP.CompanyId AS VARCHAR(15))
+ NPR.NotificationProcessName AS 'CompanyIdAndProcess',
CC.UserId,
NT.NotificationTypeName,
CC.EmailAddress,
IsRegistered = CASE
WHEN C.IsRegistered = 1 THEN 'Yes'
ELSE 'No'
END,
FROM ProductDetails NP
INNER JOIN Manufactuers C
ON C.ManufacuturerId = NP.ManufacturerId) Q
ORDER BY CN.C2DateDESC;
'11マイアミH3 4月12日/ 2017'日05/05/2017''だった場合、結果は何でしょうか? –
は、商品番号ごとにグループ化し、選択クエリ内の他の列を選択すると集計されるべきではないという論理はありませんか? max、AvgなどのSQLには異なる集約関数があります。これらの関数は、要件に応じて選択クエリで使用することも、それらの列でグループ化することもできます。 –