データベースにこのような列があります。空のためにロードされ、EのためのL:同じテーブルの2列目の値に基づいて1列のデータを分割するにはどうすればよいですか?
マイレージと同じテーブルの列を持つ:私はそれを分ける持つ方法との和を見つけようとしている
合計ロードマイルと総空マイルを言う2列に読み込まれて空になっているすべてのマイルに対して合計を計算しますか?このような
、自己が参加し、そしておそらくピボットまたはビューを、私は私が欲しいものを手に入れる方法を見つけ出すことはできません。
データベースにこのような列があります。空のためにロードされ、EのためのL:同じテーブルの2列目の値に基づいて1列のデータを分割するにはどうすればよいですか?
マイレージと同じテーブルの列を持つ:私はそれを分ける持つ方法との和を見つけようとしている
合計ロードマイルと総空マイルを言う2列に読み込まれて空になっているすべてのマイルに対して合計を計算しますか?このような
、自己が参加し、そしておそらくピボットまたはビューを、私は私が欲しいものを手に入れる方法を見つけ出すことはできません。
あなたはIF(actually IIF in SQL Server)試みることができる:
COALESCE(SUM(IF(loaded = 'L', move_distance, 0)),0) AS when_loaded,
COALESCE(SUM(IF(loaded = 'E', move_distance, 0)),0) AS when_empty
をテーブルが空(またはまったく一致が得られていないWHERE任意の追加)であるときCOALESCE
は病的なケースを可能にし、SUMはNULLを返します。
またはCASE
:
COALESCE(SUM(CASE WHEN loaded = 'L' THEN move_distance ELSE 0 END), 0)
私はCoalesceの使用について何かを見ました。私がそれをして、私がそれを働かせることができるかどうかを見てみましょう。 –
構文でIFが許可されているかどうかわからない –
そしてあなたは正しいです。 SQL Serverに適切な機能と回避策を追加しました。 – LSerni
最も簡単な私の経験では労働組合としてこのクエリを作成します
Select Loaded, move_distance Move_Loaded, 0 Move_Empty
from mytable
where Loaded = 'L'
UNION
Select Loaded, 0 , move_distance
from mytable
where Loaded = 'E'
あなただけの和が使いたい場合:
Select Loaded, sum(move_distance) Move_Loaded, 0 Move_Empty
from mytable
where Loaded = 'L'
group by Loaded, 0
UNION
Select Loaded, 0 , sum(move_distance)
from mytable
where Loaded = 'E'
group by Loaded, 0
あなたは可能性がありますあなたのグループから "0"を抜け出せるようにしてください。
通常のSQLの簡単な方法は次のとおりです。
SELECT
SUM(CASE WHEN loaded = 'L' THEN move_distance ELSE 0 END) as
LoadedMoveDistance
SUM(CASE WHEN loaded = 'E' THEN move_distance ELSE 0 END) as
LoadedMoveDistance
FROM tablename
他の方法は、以下のようにSQLサーバー固有のピボットを使用することです。
select [L] as Move_distance_loaded, [E] as Move_distance_empty
from
(
Select loaded, move_distance from table
) tb
PIVOT
(
SUM(move_distance)
FOR loaded IN ([L], [E])
) As pvt
上記のコードは正確に提供されているように動作しません。
あなたが試したことを私たちに見せたいかもしれません。サンプルデータと期待される出力も役立ちます。 – miken32