簡體   English   中英

如何按月份和id查詢SQL得到SUM

[英]How to query SQL by month & id to get SUM

我的表格數據如下:

在此處輸入圖像描述

我想顯示 asp.net 表,如: 在此處輸入圖像描述

這是按組月份和商店代碼獲取數據的代碼

var gridData = data
                    .GroupBy(
                        x => new {
                            Convert.ToDateTime(x.InspectedAt).Month,
                            Convert.ToDateTime(x.InspectedAt).Year,
                            x.ShopCode
                        }
                    )
                    .Select(x => new InspectionSearchData
                    {
                        month = x.Key.Month,
                        shopCode = x.Key.ShopCode,
                        total = (int)x.Sum(a => a.PerformCount)
                    })
                    .OrderBy(x => x.month)
                    .ToList();

但我不知道如何在 asp.net html 表中顯示像圖像 2 這樣的數據。
誰能建議如何在 asp.net 中做到這一點?
提前致謝。

創建 pivot 表:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("shopcode", typeof(string));
            dt.Columns.Add("month", typeof(int));
            dt.Columns.Add("count", typeof(int));

            dt.Rows.Add(new object[] { "007", 4, 1 });
            dt.Rows.Add(new object[] { "007", 6, 2 });
            dt.Rows.Add(new object[] { "009", 7, 1 });
            dt.Rows.Add(new object[] { "010", 8, 1 });
            dt.Rows.Add(new object[] { "010", 5, 1 });
            dt.Rows.Add(new object[] { "011", 9, 5 });

            int minMonth = dt.AsEnumerable().Min(x => x.Field<int>("month"));
            int maxMonth = dt.AsEnumerable().Max(x => x.Field<int>("month"));

            DataTable pivotTable = new DataTable();
            pivotTable.Columns.Add("shopcode", typeof(string));
            for (int i = minMonth; i <= maxMonth; i++)
            {
                pivotTable.Columns.Add(i.ToString(), typeof(string));
            }

            var groups = dt.AsEnumerable().GroupBy(x => x.Field<string>("shopcode"));

            foreach(var group in groups)
            {
                DataRow newRow = pivotTable.Rows.Add();
                newRow["shopcode"] = group.Key;
                var months = group.GroupBy(x => x.Field<int>("month"));
                foreach(var month in months)
                {
                    newRow[month.Key.ToString()] = month.Sum(x => x.Field<int>("count"));
                }
                for(int i = minMonth; i <= maxMonth; i++)
                {
                    if(newRow[i.ToString()] == DBNull.Value)
                    {
                        newRow[i.ToString()] = 0;
                    }
                }
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM