以下のクエリを使用して、特定の日付に必要な正しい結果をすべて表示します。 (月+年)の一部を変換して別の形式に変換して使用できると仮定していましたが、現在は05として表示されています/ 2016(103)、私は表示される結果を得るために、2016から05パーセントとして(120)を検索できるようにする必要がある。 コードは、アクセスVBAフォームの内部に配置される。(RIGHT(120)として結果を表示するには、varchar 103〜120 DATETIMEの部分を変換します。
SELECT
os.shop, os.prefix,
Rep_date AS FDate,
SUM(RC) AS Fulfilled,
SUM(RF) AS Refunded,
SUM(OS) AS TotalOS,
SUM(CA) AS TotalCA,
SUM(RET) AS TotalRET,
SUM(LOST) AS TotalLOST,
SUM(SHOR) AS TotalSHOR,
SUM(Total) AS Total,
CAST((CAST(SUM(RC) AS DECIMAL(9, 4))/CAST(SUM(Total) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS RCPC,
CAST((CAST(SUM(RF) AS DECIMAL(9, 4))/CAST(SUM(Total) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS RFPC,
CAST((CAST(SUM(OS) AS DECIMAL(9, 4))/CAST(SUM(Total) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS OSPC,
CAST((CAST(SUM(CA) AS DECIMAL(9, 4))/CAST(SUM(Total) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS CAPC,
CAST((CAST(SUM(RET) AS DECIMAL(9, 4))/CAST(SUM(Total) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS RETPC,
CAST((CAST(SUM(LOST) AS DECIMAL(9, 4))/CAST(SUM(Total) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS LOSTPC,
CAST((CAST(SUM(SHOR) AS DECIMAL(9, 4))/CAST(SUM(Total) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS SHORPC,
SUM(Orders) AS TotalOrders,
SUM(AmazonShipped) AS AmazonShipped,
SUM(AmazonCancelled) AS AmazonCancelled,
SUM(AmazonUnshipped) AS AmazonUnshipped,
CAST((CAST(SUM(AmazonShipped) AS DECIMAL(9, 4))/CAST(SUM(Orders) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS AmazonShippedPC,
CAST((CAST(SUM(AmazonCancelled) AS DECIMAL(9, 4))/CAST(SUM(Orders) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS AmazonCancelledPC,
CAST((CAST(SUM(AmazonUnshipped) AS DECIMAL(9, 4))/CAST(SUM(Orders) AS DECIMAL(9, 4))) AS DECIMAL(9, 4)) AS AmazonUnshippedPC,
p.Description
FROM
OrderStatusSummary os
LEFT JOIN
Prefix p ON os.prefix = p.prefix
GROUP BY
Rep_date, os.shop, os.prefix, p.Description
HAVING
(CAST(CONVERT(nvarchar(10), Rep_date, 120) AS DATETIME) = CONVERT(DATETIME, '25/05/2016', 103))
ORDER BY
CAST(CONVERT(nvarchar(10), Rep_date, 120) AS DATETIME) DESC
上記で完全な日付で検索する手段として機能する場合、以下は私はあなたが何を達成しようとしているのかを示すために、月/年だけで検索するために使用しようとしました。しかし、それは動作していません。
HAVING (RIGHT(CONVERT(nvarchar(10), Rep_date, 103),7) = '05/2016')
私が変更したコードの一部は、トップブロックと比較してHAVINGです。
「HAVING」句は、集合関数の条件を対象としています。おそらく、派生テーブル(またはcte)を用意する必要がありますか? – jarlh
テーブルの変更は不運にも私のコントロール外です。 –
派生テーブルは、単なるエイリアスを持つサブクエリです。 –