SQL Server 2008に次の形式のテーブルがあります(簡略化された形式):
日付マイル費用
次のような結果が欲しい
前週の現在の週の差異 マイル 費用
どうすればこれを達成できますか?ピボット/ピボット解除が必要ですか、それともこれを実現するための最も簡単でパフォーマンスに効果的な方法が必要ですか。ありがとう。
SQL Server 2008に次の形式のテーブルがあります(簡略化された形式):
日付マイル費用
次のような結果が欲しい
前週の現在の週の差異 マイル 費用
どうすればこれを達成できますか?ピボット/ピボット解除が必要ですか、それともこれを実現するための最も簡単でパフォーマンスに効果的な方法が必要ですか。ありがとう。
SELECT 'Miles' AS Type, SUM(CASE WHEN date = lastweek THEN miles ELSE 0 END) as lastweek
, SUM(CASE WHEN date = thisweek THEN miles ELSE 0 END) as thisweek
SUM(CASE WHEN date = lastweek THEN miles ELSE 0 END) - SUM(CASE WHEN date = thisweek THEN miles ELSE 0 END) as variance
FROM yourtable
UNION
SELECT 'Cost' AS Type, SUM(CASE WHEN date = lastweek THEN cost ELSE 0 END) as lastweek
, SUM(CASE WHEN date = thisweek THEN cost ELSE 0 END) as thisweek
SUM(CASE WHEN date = lastweek THEN cost ELSE 0 END) - SUM(CASE WHEN date = thisweek THEN cost ELSE 0 END) as variance
FROM yourtable
これは100%正しいわけではありませんが、構文は正しく、探しているものにかなり近づくはずです。