[英]T-SQL - Merge two tables without create temp table
我想要的首選結果我有這 2 個 T-SQL 查詢:
SELECT
CONVERT(NVARCHAR, AL.FECHA, 103) AS [DATE],
CONVERT(NVARCHAR, AL.HORA, 108) AS [HOUR],
SUM(CAST(AL.TOTALNETO AS money)) AS [AMOUNT]
FROM
ALBVENTACAB AL
WHERE
CONVERT(NVARCHAR, AL.FECHA, 103) = '10/09/2020'
-- AND CONVERT(nvarchar, GETDATE(), 103) AND
AND CONVERT(nvarchar, AL.HORA, 108) BETWEEN (SELECT CONVERT(nvarchar, AL.HORA, 108)) AND CONVERT(nvarchar, GETDATE(), 108)
GROUP BY
AL.FECHA, AL.HORA
ORDER BY
AL.FECHA
SELECT
CONVERT(NVARCHAR, AL.FECHA, 103) AS [DATE],
CONVERT(NVARCHAR, AL.HORA, 108) AS [HOUR],
SUM(CAST(AL.TOTALNETO AS money)) AS [AMOUNT]
FROM
ALBVENTACAB AL
WHERE
FECHA = CAST(DATEADD(DD, -7, GETDATE()) AS date)
AND CONVERT(nvarchar, AL.HORA, 108) BETWEEN (SELECT CONVERT(nvarchar, AL.HORA, 108)) AND CONVERT(nvarchar, GETDATE(), 108)
GROUP BY
AL.FECHA, AL.HORA
ORDER BY
AL.FECHA
單獨來看,他們的結果是正確的。 我想創建一個結果,如屏幕截圖所示。
我試圖創建一個 CTE,但這沒有用。 什么是正確的方法?
謝謝!
首先,我認為您正在尋找的查詢是這樣的。 星期五日期 (@fecha) 已被刪除為 DATE 類型的變量。 現在是 1 個查詢,而不是 2 個查詢,1 個用於一周,1 個用於特定的星期五。 使用條件聚合將周五的銷售額分解為名為 [FECHA_AMOUNT] 的新列。 注意:這僅適用於變量 @fecha 在過去 7 天內的情況。
declare @fecha date='20201009';
SELECT
CONVERT(NVARCHAR, AL.FECHA, 103) AS [DATE],
CONVERT(NVARCHAR, AL.HORA, 108) AS [HOUR],
SUM(CAST(AL.TOTALNETO AS money)) AS [AMOUNT],
SUM(case when cast(AL.FECHA as date)=@fecha then CAST(AL.TOTALNETO AS money)
else cast(0 as money) end) AS [FECHA_AMOUNT]
FROM
ALBVENTACAB AL
WHERE
FECHA = CAST(DATEADD(DD, -7, GETDATE()) AS date)
AND CONVERT(nvarchar, AL.HORA, 108) BETWEEN (SELECT CONVERT(nvarchar, AL.HORA, 108))
AND CONVERT(nvarchar, GETDATE(), 108)
GROUP BY
AL.FECHA, AL.HORA
ORDER BY
AL.FECHA;
最后,如評論中所述。 轉換時使用長度總是好的。 此外,貨幣數據類型不被認為是理想的。 Fwiw
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.