これまでも同様の質問がされている可能性がありますが、見つけられません。だからここに私の目的です。 私は1.Bill 2.BillDetail 3.ExpenseInfo
のような3つのテーブルを持っています。テーブル「Bill」は、テーブル「BillDetail」の外部キーである「BillID
」という名前の主キーを有する。同様に、テーブル「ExpenseInfo」はPK「ExpenseID
」を有し、これもまた「BillDetail」に対するFKである。これらの表に保管されているデータは、以下の形式です。 For 1 entry in Bill table, there might be 1 or more rows in BillDetail table where each row contains 1 ExpenseID
。今、私はここに燃料をlike-sqlクエリを使用して、詳細テーブルから縦方向のデータを水平方向に選択するにはどうすればよいですか?
BillID BillDate Fuel Food Travel
1 28-02-12 10 20 50
データに何かを選択しますクエリを書きたい、食べ物、旅行は「ExpenseInfo」テーブルに保存された様々な経費タイプです。私は以下を試しました。これを行うには正しい方法や他のスマートな方法がありますか?
SELECT *
FROM t_BillInfoDetail a
LEFT OUTER JOIN
(
SELECT ISNULL(ExpenseID,0) AS ExpenseID, ISNULL(ExpenseName,'N/A') AS ExpenseName
FROM t_expenseinfo
WHERE ExpenseID=1
) AS LocalTravel ON a.ExpenseID = LocalTravel.ExpenseID
新しく追加されました あなたのお返事ありがとうございます。 現在私は私の目的のために以下のようにしています。あなたがそれを好きだと思います。
SELECT
BI.* , BID.ExpenseID, BID.BillDescription, BID.LocalTravel, BID.LocalHotel, BID.Fuel
FROM
(
SELECT *
FROM t_BillInfo
WHERE BillID = 1
) AS BI
LEFT OUTER JOIN
(
SELECT BillID, BillDescription, ExpenseID,
ISNULL(SUM(CASE ExpenseID WHEN 1 THEN Amount ELSE 0 END), 0) AS LocalTravel,
ISNULL(SUM(CASE ExpenseID WHEN 2 THEN Amount ELSE 0 END), 0) AS LocalHotel,
ISNULL(SUM(CASE ExpenseID WHEN 3 THEN Amount ELSE 0 END), 0) AS Fuel
FROM t_BillInfoDetail
GROUP BY BillID, BillDescription, ExpenseID
) AS BID ON BI.BillID = BID.BillID
あなたの考えに感謝します。私は道を見つけた。 –