これは SQL スペシャリストへの質問です。
SQL SERVER 2008 R2 Express を使用しています。
[myTable]
2種類のレコードで構成されるという名前のテーブルがあります。
1 番目のタイプのレコードはマスター レコードで、2 番目のタイプのレコードは[Relative]
レコードです。
各マスター レコードには、複数の関連レコードがある場合があります。
レコードをマスターしたいのですがSLELECT TOP 10 * FROM [myTable]
、ユニオンサブレコードはそれぞれSELECT TOP 4
のレコードのようなものです[Relative]
。
各レコードには[PKID] NO NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED
列があります。
私はそのようなものが必要だと思います:
SELECT TOP 10 * FROM [myTable] WHERE [Relative]=0
UNION
For each (SELECT TOP 10 [PKID] as Master, * FROM [myTable] WHERE [Relative]=0 )
{SELECT TOP 4 * FROM [myTable] WHERE [Relative] = Master}
目標を達成するには、クエリをどのように修正すればよいですか?
簡単な解決策があるとは思えない二次的な質問があります。
列で説明されているように、相対レコードには 2 つの種類があります[IsImportant]
。
マスター レコードごとに重要な相対レコードが 1 つだけ選択されるようにする方法はありますか?
マスター レコードの相対レコードが 4 つ未満で、そのうちの 1 つだけが重要な場合、マスター レコードをスキップする方法はありますか?