1
SQL Serverを使用してクエリにcaseステートメントを追加しようとしています。私は基本的に次の表を与える一時的なテーブル#Step1に選択した非常に長いクエリを持っていました。ここSQL ServerでCaseステートメントを選択する
+---+------------+-------------+-----------------+---------------+
| | LOB | TechPrem | Label | Data |
+---+------------+-------------+-----------------+---------------+
| 1 | AOP | Yes | ADjAAL | 40331 |
| 1 | Boiler | Yes | AdjAAL | 0 |
| 1 | TRIA | NO | AdjAAL | 0 |
| 1 | AOP | Yes | PureAAL | 11904 |
| 1 | Boiler | Yes | PureAAL | 775 |
+---+------------+-------------+---------------- +---------------+
私の疑いで、上記の表を見て、私は '、そうでない場合は、「TechPrem」は「はい」AOP &ボイラーのためであれば、その後、私のクエリ1が実行すべきcase文を選択しますAOP &ボイラーの場合、「TechPrem」は「No」、その後はQuery 2が実行されます。いいえ」
SELECT
FileID,
SUM(CAST(REPLACE(Data,',','.') AS FLOAT)) AS Summed_AAL_Attri
FROM
(SELECT
*,
row_number() over (partition by FileID, "LOB" ORDER BY "Label" ASC) as rn
FROM
DATA WITH (NOLOCK)
WHERE
Label IN ('AdjAAL','PureAAL')
AND LOB IN ('AOP', 'Boiler', 'TRIA')) AS t
WHERE
t.rn = 1
AND FileID = 1
GROUP BY
FileID
予想される答えの場合:
SELECT
FileID,
SUM(CAST(REPLACE(Data,',','.') AS FLOAT)) AS Summed_AAL_Attri
FROM
(SELECT
*,
ROW_NUMBER() OVER (PARTITION BY FileID, "LOB" ORDER BY "Label" ASC) AS rn
FROM
DATA WITH (NOLOCK)
WHERE
Label IN ('AdjAAL')
AND LOB IN ('AOP', 'Boiler', 'TRIA')) AS t
WHERE
t.rn = 1
AND FileID = 1
GROUP BY
FileID
期待答えると、 'はい':403301
クエリ2この上の任意の提案や考えは
クエリ1、参考になります':41106
文字列リテラルがあるため、これらのROW_NUMBER関数は正しく機能しません。引用符を取り出してください。また、NOLOCKを使用してクエリを処理する前に、この記事を参照する必要があります。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/手元の質問は...あなたが何を望んでいるのか分かりません。期待される出力はサンプルのデータと一致しません。 –
質問は私には分かりません – Paparazzi
@パパラッチも私も。この質問は嫌です! – Caltor