Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据日期添加值_Sql_Sql Server - Fatal编程技术网

Sql 根据日期添加值

Sql 根据日期添加值,sql,sql-server,Sql,Sql Server,我有下表,其中我希望为一个项目和一个客户添加数量\ U销售价值,如果该项目在同一个月内开具了不止一次发票。我想在一个单独的列中得到每月销售量的总和 Item Customer Invoice_Date Quantity_Sold A XX 2014-11-04 00:00:00.000 13 A XX 2014-11-21 00:00:00.000 23 A X

我有下表,其中我希望为一个项目和一个客户添加数量\ U销售价值,如果该项目在同一个月内开具了不止一次发票。我想在一个单独的列中得到每月销售量的总和

Item   Customer         Invoice_Date         Quantity_Sold
 A        XX      2014-11-04 00:00:00.000         13
 A        XX      2014-11-21 00:00:00.000         23
 A        XX      2014-12-19 00:00:00.000        209
 A        YY      2014-12-01 00:00:00.000         10
 A        YY      2014-12-22 00:00:00.000          6
 B        XX      2014-10-29 00:00:00.000        108
 B        YY      2014-11-06 00:00:00.000         70
 B        YY      2014-11-24 00:00:00.000         84
例:XX在11月份为A项开具了两次发票,所以我想在单独的一列中得到36(13+23)

所以我想要的结果表是

Item   Customer          Invoice_date         Sum_Qty_Invoiced
A         XX               2014-Nov                  36
A         XX               2014-Dec                 209
A         YY               2014-Dec                  16
B         XX               2014-Oct                 108   
B         YY               2014-Nov                 154 
如果有人能帮我的话,那太好了
谢谢

这是一个简单的分组,在
发票日期
列上进行了一些字符串操作

SELECT
  Item,
  Customer,
  CAST(Year(Invoice_Date) AS VARCHAR(4)) + '-' + LEFT(DateName(m,Invoice_Date),3) AS Invoice_Date,
  SUM(Quantity_Sold) AS Sum_Qty_Sold
FROM MyTable
GROUP BY Item,
  Customer,
  CAST(Year(Invoice_Date) AS VARCHAR(4)) + '-' + LEFT(Datename(m,Invoice_Date),3)

活生生的例子:

这是一个简单的
GroupBy
子句。只需在上添加分组

Item,Customer,CAST(年份(发票日期)为Varchar(4))+'-'+左(日期名称(m,发票日期),3)

您的查询将类似于:

SELECT Item, Customer, 
     CAST(YEAR(Invoice_Date) AS Varchar(4)) +'-'+
       LEFT(DATENAME(m,Invoice_Date),3)
         AS Invoice_Date,SUM(Quantity_Sold)
         AS Sum_Qty_Invoiced FROM TableName GROUP BY Item,Customer, 
       Item,Customer,CAST(YEAR(Invoice_Date) AS Varchar(4))+'-
     '+LEFT(DATENAME(m,Invoice_Date),3)

您可以通过使用SQL Server的DatePart和DateName函数来实现这一点。

SELECT Item
    , Customer
    , CONVERT (CHAR(4), DATEPART(YEAR, Invoice_date)) + '-' + CONVERT(CHAR(3), DATENAME(MONTH, Invoice_date)) AS Invoice_date
    , SUM(Quantity_Sold) AS Sum_Qty_Invoiced
FROM [dbo].[Table1]
GROUP BY DATEPART(YEAR, Invoice_date), DATENAME(MONTH, Invoice_date), Item, Customer

您能否发布完整的查询结果作为示例?(我问这个问题是因为我不知道你是否在寻找一个群组,一个分析函数。从期望的结果来看,这是显而易见的,但从你的描述来看,这并不明显。)澄清一下:我所说的“post”,是指“包括”。我的意思不是“发表评论”。