小编OWS*_*Sam的帖子

返回日期范围之间的所有月份和年份 - SQL

我有点难过,我怎么会这样做.

我有一个非常基本的查询,它目前按年份和月份返回每种产品的销售额.它按年/月分组,并总结数量.这将为每个产品/年/月组合返回一行,其中有一个销售.

如果一个月没有销售,那么就没有数据.

我希望我的查询能够在我的日期范围内为每个年/月的每个产品返回一行数据,无论是否有实际订单.

如果没有订单,那么我可以为该产品/年/月返回0.

下面是我的示例查询.

Declare @DateFrom datetime, @DateTo Datetime
Set @DateFrom = '2012-01-01'
set @DateTo = '2013-12-31'

select 
Convert(CHAR(4),order_header.oh_datetime,120) + '/' + Convert(CHAR(2),order_header.oh_datetime,110) As YearMonth,
variant_detail.vad_variant_code,
sum(order_line_item.oli_qty_required) as 'TotalQty'

From 
variant_Detail
join order_line_item on order_line_item.oli_vad_id = variant_detail.vad_id
join order_header on order_header.oh_id = order_line_item.oli_oh_id

Where 
(order_header.oh_datetime between @DateFrom and @DateTo)

Group By 
Convert(CHAR(4),order_header.oh_datetime,120) + '/' + Convert(CHAR(2),order_header.oh_datetime,110),
variant_detail.vad_variant_code
Run Code Online (Sandbox Code Playgroud)

sql sql-server date

4
推荐指数
1
解决办法
3万
查看次数

SQL Server - LIKE [XXXX]

我试图只返回包含特定字段中的文本[XXXX]的值.我的查询返回有4位数字的值,因为我假设SQL服务器将[XXXX]视为4位数的任何数字.

我在下面有一个测试查询,带有值列表来演示问题.

select X.VadDesc 
From (VALUES
('Product AAAA Description'), 
('Product BBBB Description'), 
('Product [XXXX] Description'), 
('Product2 [XXXX] Description'), 
('Product 2 [AAAA] Description'), 
('Product X 1234 Description'),
('Product X 1235 Description'),
('Product X 1236 Description'),
('Product X 1237 Description')
) as X (VadDesc)
Where X.VadDesc like '%[XXXX]%'
Run Code Online (Sandbox Code Playgroud)

我的查询应该只返回:

Product [XXXX] Description
Product2 [XXXX] Description
Run Code Online (Sandbox Code Playgroud)

但它返回:

Product [XXXX] Description
Product2 [XXXX] Description
Product X 1234 Description
Product X 1235 Description
Product X 1236 Description
Product X 1237 Description
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我不只是想寻找XXXX,因为这可能是我不想返回的行.

sql-server

3
推荐指数
1
解决办法
1510
查看次数

带有分区的SQL Row_Count函数

我有一个查询DATA,从一些UNION ALL连接的查询返回一组结果作为一个表调用.

我正在做ROW_NUMBER()这个,以获取特定分组的行号(WorksOrderNo)

ROW_NUMBER() Over(partition by Data.WorksOrderNo order by Data.WorksOrderNo) as RowNo,
Run Code Online (Sandbox Code Playgroud)

是否存在ROW_Count可以指定分区的等效函数,并返回该分区的行数?

ROW_Count() Over(partition by Data.WorksOrderNo order by Data.WorksOrderNo) as RowNo ???
Run Code Online (Sandbox Code Playgroud)

原因是,这是用于驱动报表布局的查询.作为其中的一部分,我需要根据每个WorksOrderNo的总行数是否大于1进行格式化.

因此,例如,如果工作订单有三行,则该row_number函数当前返回1,2和3,其中行计数将在每行返回3.

sql t-sql sql-server window-functions

1
推荐指数
1
解决办法
473
查看次数

标签 统计

sql-server ×3

sql ×2

date ×1

t-sql ×1

window-functions ×1