0

これが簡単になることはわかっていますが、その方法を思い出せません。Total Capacity という新しい列を追加する場所を以下に示すクエリがあります。これは、私の datediff の結果 * 私の Capcity です。しかし、私の人生では、それを理解することはできません。手伝ってくれますか?

SELECT
  Capacity.StartDate
  ,Capacity.EndDate, DATEDIFF(d,Capacity.StartDate
  ,Capacity.EndDate)+1 AS DaysOpen
  ,Capacity.Capacity
  ,Capacity.Site_Skey
FROM
  Capacity

結果

  StartDate   EndDate       DaysOpen   Capacity TotalCapacity
  01/05/2010  30/09/2010    153        46       7038
4

4 に答える 4

3

これら 2 つの列は、計算された永続化された列としてテーブルに簡単に追加できます。次に、それらを簡単に選択できるようにします。それらはテーブルの新しい列であり、他の列と同様に選択できます。必要に応じて、それらにインデックスを付けることもできます。

ALTER TABLE [dbo].[Capacity]
    ADD DaysOpen AS DATEDIFF(d, StartDate, EndDate) PERSISTED

ALTER TABLE [dbo].[Capacity]
    ADD TotalCapacity AS DATEDIFF(d, StartDate, EndDate) * [Capacity] PERSISTED

これで、次を発行できます。

SELECT
    StartDate, EndDate,
    DaysOpen,
    Capacity,
    TotalCapacity
FROM
    Capacity

更新:アプローチを使用する場合は、DATEDIFF+1次の列の仕様を使用します。

ALTER TABLE [dbo].[Capacity]
    ADD DaysOpen AS (DATEDIFF(d, StartDate, EndDate) + 1) PERSISTED

ALTER TABLE [dbo].[Capacity]
    ADD TotalCapacity AS (DATEDIFF(d, StartDate, EndDate) + 1) * [Capacity] PERSISTED
于 2013-02-25T13:51:54.257 に答える
2
SELECT
  Capacity.StartDate
  ,Capacity.EndDate
  ,DATEDIFF(d,Capacity.StartDate ,Capacity.EndDate)+1 AS DaysOpen
  ,Capacity.Capacity
  ,(DATEDIFF(d,Capacity.StartDate ,Capacity.EndDate)+1) * Capacity.Capcity as TotalCapacity
  ,Capacity.Site_Skey
FROM
  Capacity
于 2013-02-25T13:47:17.380 に答える
2

このようなもの ?

SELECT
  Capacity.StartDate
  ,Capacity.EndDate
  ,DATEDIFF(d, Capacity.StartDate, Capacity.EndDate) + 1 AS DaysOpen
  ,Capacity.Capacity
  ,(DATEDIFF(d, Capacity.StartDate, Capacity.EndDate) + 1) * Capacity.Capacity AS TotalCapacity
FROM
  Capacity
于 2013-02-25T13:47:23.660 に答える
1
SELECT
  Capacity.StartDate
  ,Capacity.EndDate
  ,DATEDIFF(d,Capacity.StartDate
  ,Capacity.EndDate)+1 AS DaysOpen
  ,Capacity.Capacity
  ,Capacity.Site_Skey
  ,(DATEDIFF(d,Capacity.StartDate
  ,Capacity.EndDate)+1 ) * Capacity.Capacity
FROM
  Capacity
于 2013-02-25T13:50:52.173 に答える