1

T-SQL クエリについて、明らかに初心者の質問があります (T-SQL に関しては、私はまったく初心者なので、これは理にかなっています)。

次の表を検討してください --

Key    | fieldName  |    Value
==============================
465    |    Bing    |     10
465    |    Ping    |     50
846    |    Bing    |     20  
846    |    Zing    |     80  
678    |    Bing    |     10
678    |    Ping    |     50
678    |    Zing    |     20 

以下を返すクエリをどのように作成しますか?

  • のfieldName BingValueを持つ行が存在する場合は10、そのキーを持つすべての行を返します。それ以外の場合は、そのキーに関連する行を返しません。

上記の例では、結果セットは次のようになります --

Key    | fieldName  |    Value
==============================
465    |    Bing    |     10
465    |    Ping    |     50
678    |    Bing    |     10
678    |    Ping    |     50
678    |    Zing    |     20 

このテーブルに格納されたデータを再編成するためのより良い方法がある可能性が高いことは理解していますが、これを制御することはできません。データの再編成に関するコメントを喜んで読んでいますが、現在存在する問題を解決しない答えをマークすることはできません。

4

2 に答える 2

3

テーブルに再度参加して、Bing/10 の値を見つけることができます。

SELECT DISTINCT T1.[Key], T1.fieldName, T1.Value
FROM YourTable T1
INNER JOIN YourTable T2 ON T1.[Key] = T2.[Key]
WHERE T2.fieldName = 'Bing' and T2.Value = 10

そして、それらは今大流行しているので、ここにSQL Fiddle のデモンストレーションがあります。

于 2013-03-05T13:56:57.790 に答える
1

別のオプションは次のとおりです。

SELECT DISTINCT T1.[Key], T1.fieldName, T1.Value
FROM YourTable T1
WHERE EXISTS (SELECT 1 
              FROM YourTable T2
              WHERE T2.[Key] = T1.[Key]
                  AND T2.fieldName = 'Bing'
                  AND T2.Value = 10)
于 2013-03-05T14:15:17.937 に答える