2016-09-14 21 views
-2

私は以下のようなクエリを持っていますが、ShowRoomNameUnitNameは結果に表示されません。どうすれば解決できますか?SQL Serverクエリが正しく機能しない

SELECT A.ShowRoomId 
     , Sum(B.BasicAmount) AS TotalBasic 
     , Sum(B.HouseAmount) AS TotalHouseAmount 
     , Sum(B.MedicaleAmount) AS TotalMedicaleAmount 
     , Sum(B.ConvenceAmount) AS TotalConvenceAmount 
     , Sum(B.PhoneBillAmount) AS TotalPhoneBillAmount 
     , Sum(B.DirectorRemuneration) AS TotalDirectorRemuneration 
     , Sum(B.OthersAmount) AS TotalOthersAmount 
FROM Employees A 
     OUTER APPLY (SELECT TOP 1 * 
        FROM EmployeeBasics B 
        WHERE (A.EmployeeID = B.EmployeeID) 
        ORDER BY B.BasicUpdateDate DESC) AS B 
     OUTER APPLY (SELECT ShowRoomId 
          , ShowRoomName 
          , UnitId 
        FROM dbo.ShowRooms C 
        WHERE A.ShowRoomId = C.ShowRoomId) AS C 
     OUTER APPLY (SELECT UnitId 
          , UnitName 
        FROM dbo.Units D 
        WHERE C.UnitId = D.UnitId) AS D 
GROUP BY A.SHowRoomId 
+1

もちろん、これらの列は表示されず、select文の列のリストにもありません。なぜあなたは結合の代わりにここにOUTER APPLYを使用していますか? –

答えて

0
  • あなたが質問をするときに、より説明的なタイトルを使用します。クエリではない 作業は、基本的にすべての質問の99%を記述します。
  • あなたのユニット名と showroomnameは、あなたがそれらを選択いけないので、表示されていけない...
+0

C.ShowRoomNameを追加するとエラーが表示されます。 –

+0

多分あなたは外部の代わりに左の結合を使用する必要がありますか?論理の中で、なぜジョインの代わりに外部適用を使用するのかを示唆するものは何もありません。 – xenapan

0

私はあなたがこのような何かをしたいことを推測しています。注意あなたのエイリアスを意味のあるものに変更しました。 A、B、Cを使用すると、エイリアスに悪い習慣です。そのようなコードを維持するのは難しいことです。

SELECT e.ShowRoomId 
    , Sum(eb.BasicAmount) AS TotalBasic 
    , Sum(eb.HouseAmount) AS TotalHouseAmount 
    , Sum(eb.MedicaleAmount) AS TotalMedicaleAmount 
    , Sum(eb.ConvenceAmount) AS TotalConvenceAmount 
    , Sum(eb.PhoneBillAmount) AS TotalPhoneBillAmount 
    , Sum(eb.DirectorRemuneration) AS TotalDirectorRemuneration 
    , Sum(eb.OthersAmount) AS TotalOthersAmount 
    , sr.ShowRoomName 
    , u.UnitName 
FROM Employees e 
OUTER APPLY 
(
    SELECT TOP 1 * 
    FROM EmployeeBasics eb1 
    WHERE e.EmployeeID = eb1.EmployeeID 
    ORDER BY eb1.BasicUpdateDate DESC 
) AS eb 
LEFT JOIN ShowRooms sr ON sr.ShowRoomId = e.ShowRoomId 
LEFT JOIN Units u ON u.UnitID = sr.UnitID 
GROUP BY e.SHowRoomId 
    , sr.ShowRoomName 
    , u.UnitName 
関連する問題