C# 在带日期的透视事务中,我应该在哪里放置Where子句

C# 在带日期的透视事务中,我应该在哪里放置Where子句,c#,sql-server,C#,Sql Server,上面是我的演示数据库,其中包含amount_usd、paytype和SendItemDateTime1列。当我在下面的查询中使用pivok时,结果如下,SendItemDateTime1不是按分组的。。。有什么问题 amount_usd paytype SendItemDateTime1 5.00 google 2015-04-01 2.00 google 2015-04-01 5.00 transfer 2015-04-01 15.00 google 201

上面是我的演示数据库,其中包含amount_usd、paytype和SendItemDateTime1列。当我在下面的查询中使用pivok时,结果如下,SendItemDateTime1不是按分组的。。。有什么问题

amount_usd  paytype SendItemDateTime1
5.00    google  2015-04-01
2.00    google  2015-04-01
5.00    transfer    2015-04-01
15.00   google  2015-04-01
5.00    google  2015-04-01
2.00    google  2015-04-02
60.00   google  2015-04-02
60.00   google  2015-04-02
5.00    google  2015-04-03
下面是上面查询的结果

 select amount_usd, paytype, SendItemDateTime1 from tblMobile_RequestOrderLog
  where status = 1 and sendstatus = 1 and enable = 1
  and SendItemDateTime1  between '4/1/2015' and '4/30/2015'
  order by SendItemDateTime1 
下面是我想要的

SenditemDateTime1   google  mol molpay  molstore    paypal  transfer
2015-04-01  15.00   NULL    NULL    NULL    NULL    NULL
2015-04-01  5.00    NULL    NULL    NULL    NULL    NULL
2015-04-01  15.00   NULL    NULL    NULL    NULL    NULL
2015-04-01  5.00    NULL    NULL    NULL    NULL    NULL
2015-04-01  60.00   NULL    NULL    NULL    NULL    NULL
2015-04-01  10.00   NULL    NULL    NULL    NULL    NULL
对不起,第一次在这里发问

编辑

这项工作为我与“何处”条款:


您可以使用下面的查询透视第一个表中的数据-您只需要显式列出所有付款类型列。我假设
SUM()
作为要应用的聚合:

SELECT SendItemDateTime1, COALESCE([google], 0), COALESCE([transfer], 0),
       COALESCE([paypal], 0),COALESCE([molpay], 0)
FROM (Select SendItemDateTime1, paytype, amount_usd 
      from tblMobile_RequestOrderLog
      where gameidn = 248 and status = 1 and sendstatus = 1 and enable = 1 
            and SendItemDateTime1 between '4/1/2015 12:00:00 AM'
                                      and '4/30/2015 11:59:59'
) X 
PIVOT
(
  SUM(amount_usd)
  for [paytype] IN ([google],[transfer],[paypal],[molpay])
) piv;

编辑,重新筛选哪里

如果筛选器谓词可以应用于最后的列,则可以在轴之后应用
WHERE
。否则,如果需要在未插入的列中执行筛选,则可以使用CTE或派生表。以下是CTE和postfilter中的前置过滤器示例,其中:

SELECT SendItemDateTime1, [google],[transfer],[paypal],[molpay]
FROM MyTable
PIVOT
(
 SUM(amount_usd)
 for [paytype] IN ([google],[transfer],[paypal],[molpay])
) piv;

您发布了正确的查询吗?其中没有轴?如果您想将空值映射为零,请使用感谢StuartLC,此查询对我有用。但是添加“Where”命令怎么样?因为MyTable还有其他列,而不是SendItemDateTime1、[google]、[transfer]、[paypal]、[molpay]。
SELECT SendItemDateTime1, [google],[transfer],[paypal],[molpay]
FROM MyTable
PIVOT
(
 SUM(amount_usd)
 for [paytype] IN ([google],[transfer],[paypal],[molpay])
) piv;
-- Prefilter of non-pivot columns done in CTE or Derived table
WITH cte AS
(
  SELECT [amount_usd], [paytype], [SendItemDateTime1]
  FROM MyTable
  WHERE [amount_usd] > 2
)
SELECT SendItemDateTime1, COALESCE([google], 0), COALESCE([transfer], 0),
       COALESCE([paypal], 0),COALESCE([molpay], 0)
FROM cte
PIVOT
(
 SUM(amount_usd)
 for [paytype] IN ([google],[transfer],[paypal],[molpay])
) piv
-- Post filter of pivot columns done on the final projection
WHERE SendItemDateTime1 > '2015-01-01';