有 2 个请求,两者都完美执行,但分别执行。
请求 1:
WITH t1_CTE (t1_Дата, index_Дата)
AS
(
SELECT [Дата] AS t1_Дата,
ROW_NUMBER() OVER(ORDER BY Дата ASC) - 1 AS index_Дата
FROM [DB1].[dbo].[Testing]
WHERE Дата >= CONCAT(SUBSTRING('2021-08-10', 1, 4), SUBSTRING('2021-08-10', 6, 2), SUBSTRING('2021-08-10', 9, 2)) AND Дата <= CONCAT(SUBSTRING('2021-08-26', 1, 4), SUBSTRING('2021-08-26', 6, 2), SUBSTRING('2021-08-26', 9, 2))
GROUP BY Дата
)
SELECT t1_Дата AS Select_day
FROM t1_CTE
WHERE index_Дата = 0 --20210810
Дата
- 以数字形式存储,例如20210810。但它以字符串形式进入请求2021-08-10
要求 2:
SELECT IIF([Наименование субъекта] IS NULL, 'Не задано', [Наименование субъекта]) AS Area,
[Наименование текущего владельца] AS Kontragent,
SUM([Количество упаковок]) AS cnt,
[Дата] AS Select_day
FROM [DB1].[dbo].[Testing]
WHERE Дата = '20210810'
AND case when [Наименование субъекта] is null then 'Не задано' else [Наименование субъекта] end in ('Пермский край', 'Московская область')
GROUP BY [Наименование субъекта], [Наименование текущего владельца]
ORDER BY SUM([Количество упаковок]) DESC
解释此查询中的功能是没有意义的。你只需要WHERE Дата =
替换Select_day
。
没有创建表格和数据填充的问题。我只是想了解如何将它们一起种植。
Microsoft SQL Server 2012 (SP4-GDR) (KB4583465) - 11.0.7507.2 (X64) Nov 1 2020 00:48:37 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 (Build 9200:) (管理程序)
更新
解决了我的问题:
WITH t1_CTE (t1_Дата, index_Дата)
AS
(
SELECT [Дата] AS t1_Дата,
ROW_NUMBER() OVER(ORDER BY Дата ASC) - 1 AS index_Дата
FROM [DB1].[dbo].[Testing]
WHERE Дата >= CONCAT(SUBSTRING('2021-08-10', 1, 4), SUBSTRING('2021-08-10', 6, 2), SUBSTRING('2021-08-10', 9, 2)) AND Дата <= CONCAT(SUBSTRING('2021-08-26', 1, 4), SUBSTRING('2021-08-26', 6, 2), SUBSTRING('2021-08-26', 9, 2))
GROUP BY Дата
)
SELECT IIF([Наименование субъекта] IS NULL, 'Не задано', [Наименование субъекта]) AS Area,
[Наименование текущего владельца] AS Kontragent,
SUM([Количество упаковок]) AS cnt
FROM [DB1].[dbo].[Testing]
LEFT JOIN t1_CTE ON Дата = t1_Дата
WHERE Дата = t1_CTE.t1_Дата
AND index_Дата = 0
AND case when [Наименование субъекта] is null then 'Не задано' else [Наименование субъекта] end in ('Пермский край')
GROUP BY [Наименование субъекта], [Наименование текущего владельца]
ORDER BY SUM([Количество упаковок]) DESC