2017-07-11 22 views
-3

誰でもこのクエリが実際に行っていることを説明できますか?SQL ServerのSQLクエリ

SELECT 
    u.business_id, 
    u.name, 
    u.cusine, 
    MAX(u.values1) 
FROM 
    SOURCE_DATA u 
UNPIVOT 
    (values1 FOR cusine IN (Sandwiches, Pizza, Bars, Food, Mexican, Thai, Indian)) u 
WHERE 
    u.values1 = 1 
GROUP BY 
    u.business_id, u.name, u.cusine 
ORDER BY 
    u.name 
+3

MySQLまたはMS SQL Serverを使用していますか?関与していない製品にはタグを付けないでください。 – jarlh

+2

[MySQL](https://dev.mysql.com/doc/refman/5.7/en/)と[SQL Server](https://docs.microsoft.com/en-us/sql/t-sql/)言語リファレンス)は、異なる会社によって作成された異なるソフトウェアパッケージです。両方ともSQLを実装していても、SQLをさまざまな方法で拡張し、異なる構文規則を使用して、それらの間でクエリが互換性がない場合があります。正しいタグを使用してください。 – axiac

+0

クエリで構文エラーが発生している可能性があります。 –

答えて

0

それがフィールドのそれぞれのように見えるクエリに基づいて、サンドイッチ、ピザなどが1または0

アンピボットは、列挙されたフィールドのそれぞれを取り、2つのフィールドに変換し、料理(いずれかを含みますテキストフィールド)とvalues1。各元のフィールドは行になります。リストされていないフィールドは単純にコピーされます。

これを取って、フィールドが1

ショートバージョンでマークされた元のデータからbusiness_id、名前や料理のすべての組み合わせを返すことにより、グループは各business_idと名前のためにそれがリストになってきたということですそれぞれの料理のオリジナルのフィールドに1がついています。たとえば、ピザに1があれば、ピザの行が返されます。