繁体   English   中英

.net 临时表问题

[英].net temp table issue

我有一个 c# .net 核心项目和一个名为 Sensor 的 model。

public class Sensor
{
    public int Id { get; set; }
    public long timestamp { get; set; }
    [Display(Name = "Country")]
    public string country { get; set; }
    [Display(Name = "Region")]
    public string region { get; set; }
    [Display(Name = "Emitter")]
    public string emitter { get; set; }
    [Display(Name = "Value")]
    public string value { get; set; }
}

我需要得到以下数据:

国家和地区的组合(称为标签)及其出现。 在该标签上,添加发射器并分别计算出现次数。

前任:

美国南部 - 1000

usa.south.sensor01 - 700

usa.south.sensor02 - 300

加拿大.北 - 1500

canada.north.sensor01 - 1250

canada.north.sensor02 - 250

我最初的想法是使用临时表来保存值,但它不起作用。

CREATE TABLE _Results (Tag Varchar(150), Total Int)

INSERT INTO[_Results] (Tag, Total)"  
SELECT country  '.'  region AS Tag, COUNT() AS Total
FROM Sensor
GROUP BY country, region

INSERT INTO[_Results](Tag, Total)
SELECT country  '.'  region  '.'  emitter AS Tag, COUNT() AS Total
FROM Sensor
GROUP BY country, region, emitter

SELECT * FROM _Results

DROP TABLE _Results

但我不能让它工作。

有人能帮我吗? Memory 使用解决方案不可用,所以我必须使用 SQL 和 Microsoft.EntityFrameworkCore

不需要临时表

SELECT country + '.' + region AS Tag, '' as Emitter, COUNT() AS Total
FROM Sensor
GROUP BY country, region
UNION
SELECT country + '.' + region AS Tag, Emitter, COUNT() AS Total
FROM Sensor
GROUP BY country, region, emitter

为 Tag、Emitter 和 Total 创建一个实体。 我们称之为统计。 在 DBContext 中声明一个 dbset

public virtual DbSet<Statistic> Statistics { get; set; }

使用 FromSql 和 AsNoTracking 运行上述 SQL

    query = context.Statistics
    .FromSql(sql)
    .AsNoTracking();

sql 是将上述 SQL 查询保存在字符串中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM