小编lem*_*unk的帖子

SQL查询需要显示空值

我使用SQL Server管理器2008.

我有一个查询如下:

SELECT dbo.iLines.Part,
   dbo.iLines.Pg,
   SUM(dbo.iLines.Qty) as sales6months,
   dbo.iLines.Prefix       
FROM 
   Autopart.dbo.iLines
RIGHT JOIN
   dbo.product  
ON
   dbo.product.keycode = dbo.ilines.part                 

where  prefix = 'i'
   and ([datetime] > dateadd(month, -6, getdate()))
   and dbo.ilines.part = 'BK939'

group by 
   dbo.ilines.pg,
   dbo.ilines.part,
   dbo.ilines.prefix

order by sales6months desc
Run Code Online (Sandbox Code Playgroud)

因此,为了解释,我希望在产品表中的所有产品上获得最后6个月的销售额.

问题在于某些产品没有任何销售.我仍然需要它们来展示.所以我要问的是显示所有产品的最近6个月的销售额,包括0个销售额.

"iLines"是导致问题的表格,因为如果有销售,零件编号只存在于那里.

我知道可能有一种方法可以进行多个查询等.但我只需要1个查询就可以了.

我试过让null通过,但没有做任何加上它真的可怕使用空值呵呵.

要添加到此查询的任何代码段都非常棒!

非常感谢!

如果您还需要更多信息,请询问!

UPDATE!对不起日期只存在于Ilines.

Ilines =销售表产品=只是我们所有产品的表格

这是主要的问题,它意味着在过去的6个月内推出了最畅销的"n"部件.它工作,除了我说它没有显示没有出售的部分.

ALTER PROCEDURE [dbo].[MyPareto]
@pgParam varchar(255)
AS
SELECT
   i.pg,
   dbo.OldParetoAnalysis.Pareto,
   i.part,
   i.sales6months,
   a.LostSales6Months,
   dbo.NewParetoAnalysis.Pareto

FROM
OPENQUERY(SACBAUTO, 'SELECT dbo.iLines.Part,
                            dbo.iLines.Pg,
                            SUM(dbo.iLines.Qty) as   sales6months,
                            dbo.iLines.Prefix 
                     FROM Autopart.dbo.iLines 
                     where prefix …
Run Code Online (Sandbox Code Playgroud)

sql t-sql null

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

.Net CORE Web API无缓存但仍然会发生

使用.Net Core和visual studio 2015.

我在.net核心中创建了一个Web API,最近在测试中我意识到我的结果正在被缓存(或者至少看起来像是).所以我建立了一个响应缓存并将位置设置为none:

[Route("api/[controller]")]
public class NopProductController : Controller
{
    private INopProductService _nopProductService { get; set; }
    public NopProductController(INopProductService nopProductService)
    {
        _nopProductService = nopProductService;
    }

    [HttpGet]
    [ResponseCache(Duration = 60, Location = ResponseCacheLocation.None)]
    public IActionResult GetChangedProducts()
    {
        return Ok(_nopProductService.GetChanged());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我检查邮差并检查标题时,我发现:

Cache-Control→no-cache,max-age = 60 Pragma→no-cache

这看起来是正确的我相信.但是,当我在我的Sql Server 2012数据库中编辑相关表上的数据(我更改1单元格值)然后刷新请求时,更改不存在.

如您所见,看起来缓存已关闭.那么为什么不会发生变化,只有当我重置IIS时才会发生变化.

这是Kestrel和IIS的问题吗?有什么错误或我在这里错过的东西?

注意:WebAPI是在本地发布的,用于测试+在Windows 10上通过IIS托管.

c# asp.net-web-api asp.net-core

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

从comboBox中获取选定的值

我正在使用C#,winforms.

遇到了一个小问题.我尽可能地调试,这让我相信我正在使用的代码导致问题.好的,我有一个充满查询数据的组合框.

有2列"名称"和"键码".我只使用以下方式显示名称:

accCollection.DisplayMember = "name";
Run Code Online (Sandbox Code Playgroud)

然后我使用以下内容来获取与名称对应的keycode值.

string acct = accCollection.SelectedValue.ToString();
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是键码与名称不匹配.我虽然这可能是我的查询,所以我做的是在填充comboBox之前在数据网格视图中显示查询结果.数据网格视图显示正确的结果,这使我相信我使用了错误的代码!

希望这是一个愚蠢的一线问题,如果你们想要更多的代码让我知道,我将编辑这篇文章.

更新继承了我忘记提及的代码,因为你可以看到我已经分配了数据成员

accCollection.DataSource = myTable;
accCollection.DisplayMember = "name";
accCollection.ValueMember = "keycode";
Run Code Online (Sandbox Code Playgroud)

更新::::还有更多信息.所选值应为1557,即名称帐号.但我得到1855,这是一个不同的帐号.就像我说数据表是正确的....这就是为什么我sooooooo困惑!

更新::下载一些代码,以便您可以看到我如何使用信息更新组合框!

SqlCommand accountFill = new SqlCommand("SELECT name, keycode FROM dbo.Customer", conn1);
SqlDataAdapter readacc = new SqlDataAdapter(accountFill);
DataTable dt = new DataTable();


readacc.Fill(dt);
dataGridView3.DataSource = dt;
conn1.Close();
accCollection.DataSource = dt;
accCollection.DisplayMember = "name";
accCollection.ValueMember = "keycode";
Run Code Online (Sandbox Code Playgroud)

然后我将以下内容传递给我调用其他查询的任务.

private void button1_Click_1(object sender, EventArgs e)
{
    checkBox1.Checked = true;
    string acct = accCollection.SelectedValue.ToString();

    Task t = new Task(() => …
Run Code Online (Sandbox Code Playgroud)

c# combobox winforms

2
推荐指数
1
解决办法
5万
查看次数

此流不支持使用流进行搜索操作

使用C#ASP.net 4.5,Nopcommerce CMS,MVC 4和visual studio 2012.

嘿伙计们,这似乎是人们熟悉的问题,我,我搜索过"谷歌",还没有找到符合我需要的解决方案.

请注意,这不是我的代码,我被要求解决这个问题(我对文件I/O的知识有限,只是基础知识).

错误堆栈跟踪是:

"   at System.Net.ConnectStream.set_Position(Int64 value)\r\n   at   Hroc.Plugin.Core.CsvProductManagement.Services.CsvReader.Initialise(Stream stream, Encoding encoding)\r\n   at Hroc.Plugin.Core.CsvProductManagement.Services.CsvReader..ctor(Stream stream)\r\n   at Hroc.Plugin.Core.CsvProductManagement.Services.ImportService.ImportStoreProductsFromCsv(Stream stream, Int32 storeContext, Int32 vendorId, Boolean deleteUnmatched)\r\n   at Hroc.Plugin.Core.CsvProductManagement.Services.StaticImportFile.GetStoreProductImportMessages(Stream stream, Int32 storeContext, Int32 vendorId, Boolean deleteUnmatched)\r\n   at Hroc.Plugin.Core.CsvProductManagement.Tasks.ImportFilesTask.Execute()\r\n   at Nop.Services.Tasks.Task.Execute(Boolean throwException) in c:\\Users\\stevesmith\\Documents\\GitHub\\Store\\Libraries\\Nop.Services\\Tasks\\Task.cs:line 83"
Run Code Online (Sandbox Code Playgroud)

现在为了代码,我试图尽量缩短它(它是MVC虽然准备了101种不同的方法......

public void Execute() {
        if (_importTaskSettings.Enabled) {
            var response = HttpWebRequest.Create(_importTaskSettings.ImportFileUrl).GetResponse();

            if (response != null)
            {
                using (var stream = response.GetResponseStream())
                {
                    var messages = StaticImportFile.GetStoreProductImportMessages(stream, 0, 1, true); //error occurs here …
Run Code Online (Sandbox Code Playgroud)

c# io stream asp.net-mvc-4

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

SQL允许C#中的表为null

使用SQL Server 2008,WinForms C#.NET 4.5,Visual Studio 2012.

我有一个查询当前使用来自a的一些信息更新表GridView.

下面是调用存储过程的代码:

public void UpdateMain(string part, int? pareto)
{
  try
  {
    using (SqlConnection AutoConn = new SqlConnection(conn32))
    {
      AutoConn.Open();
      using (SqlCommand InfoCommand = new SqlCommand())
      {
        using (SqlDataAdapter infoAdapter = new SqlDataAdapter(InfoCommand))
        {
          InfoCommand.Connection = AutoConn;
          InfoCommand.CommandType = CommandType.StoredProcedure;
          InfoCommand.CommandText = "dbo.updateMain";
          InfoCommand.Parameters.AddWithValue("@part", part);
          InfoCommand.Parameters.AddWithValue("@pareto", pareto);
          InfoCommand.CommandTimeout = 180;

          InfoCommand.ExecuteNonQuery();
        }
      }
    }
  }
  catch (Exception e)
  {
    //MessageBox.Show("Error in connection :: " + e);
  }
}
Run Code Online (Sandbox Code Playgroud)

这是SQL:

ALTER PROCEDURE [dbo].[updateMain] …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server-2008

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

SQL Server:列数组

January好吧,我一直在思考动态列的想法,我的意思是一个名为......的列表December

用户在运行时将选择月份范围,例如FebJuly

我通常会做的是从后面的代码中获取所有列,然后对我需要的列和不需要的列进行排序。

但我想知道如何在 SQL 中完成这一切。

我知道 SQL 不支持数组(悲伤的表情),但还有其他选择。

所以我的问题是,有没有一种方法可以设置 SQL 查询,根据作为一系列列名称的参数动态选择多个列?

我查看了一些动态查询,但它们只执行 1 列。

我正在考虑将后面的代码提供的一串列作为 SQL 中的 1 个参数传递,然后以某种方式迭代以选择每一列。

你们有什么感想?不能完成吗?可以做但是很乱?

编辑:我想我会提供一些代码,正如您所看到的,我应用了数据透视查询并获取了一系列列(月)。到目前为止所建议的是先正常化,然后转向。

SELECT
   [1] January ,
   [2] February,
   [3] March,
   [4] April,
   [5] May,
   [6] June,
   [7] July,
   [8] August,
   [9] September,
   [10] October,
   [11] November,
   [12] December
   FROM
(
  SELECT MONTH(Convert(datetime,[lasttaken],120)) as months, complete
  FROM #Temp WITH(NOLOCK)
) d
pivot 
(
   count(complete)
   for …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

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

Unity3d:仅将幅度钳位到x轴

使用Unity3d 4.1.2,C#mono.

转到以下脚本:

using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour 
{
public float MoveSpeed = 30.0f;

public float maxVel = 0.000000001f;
// Use this for initialization
void Start () 
{
    //Physics.gravity = Vector3(0,-50,0);
}

void FixedUpdate()
{
    maxVel = 20f;
    MoveSpeed = 50.0f;
    if(Input.GetKey(KeyCode.D))
    {
        rigidbody.AddForce(Vector3.right * MoveSpeed);
        Debug.Log("BEFORE = " + rigidbody.velocity.magnitude);
    }

    if(Input.GetKey(KeyCode.A))
    {
        rigidbody.AddForce(Vector3.left * MoveSpeed);
    }

    rigidbody.velocity = Vector3.ClampMagnitude(rigidbody.velocity, maxVel);
    Debug.Log("AFTER = " + rigidbody.velocity.magnitude);
}
// Update is called once per frame
void …
Run Code Online (Sandbox Code Playgroud)

c# mono unity-game-engine

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

如何从表行执行SQL动态查询字符串?

我有一个很棒的查询,用一个脚本列表填充我的虚拟表,这些脚本为所有外键创建非聚集索引.

但是这个列表很棒,但我想进一步采取动态查询来执行每个脚本.

我没有那么多的动态查询exp,因为大多数时候我只是在我的c#软件中复制功能.

所以我有..

DECLARE @SQLquery as NVARCHAR(MAX)

SET @SQLquery = (SELECT * FROM #ForiegnKeyScriptsNumero)

EXECUTE @SQLquery

DROP TABLE #ForiegnKeyScriptsNumero
Run Code Online (Sandbox Code Playgroud)

现在这不会起作用,因为我会返回多行.

我需要做的是简单地获取每一行并一个接一个地执行.

对于我的生活,我的大脑已经融化了,我只是看不到它.

我知道这是一个简单的修复,我错过了什么?

更新::

只是为了添加我的脚本在我的表的每一行中生成的内容,表只有1列.

IF NOT EXISTS 
    (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ActivityLog]') 
     AND name = N'IX_ActivityLogTypeId') CREATE NONCLUSTERED INDEX  [IX_ActivityLogTypeId] ON [dbo].[ActivityLog]( [ActivityLogTypeId] ASC ) 
     WITH (PAD_INDEX  = OFF, 
           STATISTICS_NORECOMPUTE  = OFF, 
           SORT_IN_TEMPDB = OFF, 
           IGNORE_DUP_KEY = OFF, 
           DROP_EXISTING = OFF, 
           ONLINE = OFF, 
           ALLOW_ROW_LOCKS  = ON, 
           ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

这段代码就在我的行中.

作为一种享受,我想我会发布生成脚本的脚本.

CREATE …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2012

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

按指南位置列表排序

我有以下内容:

var nodes = _nodeService.GetNodeChildren(id, nId);
var association = _nodeService.GetNodeOrder(id, nId);

var joinedNodes = nodes.Join(association,
    n => n.Id,
    a => a,
    (n, a) => new {nodes = n, association = a};

var enumerable = joinedNodes.ToList();
var orderedNodes = enumerable.OrderBy(x => x.association);

return orderedNodes.nodes;
Run Code Online (Sandbox Code Playgroud)

其中,节点是对象列表,关联是 GUID 列表。

问题是我没有按预期收到订单。

我需要根据 GUIDS 位置的顺序返回节点列表。

以下是部分测试代码

_ngOrder = new List<Guid>
{
    _nodeId2,
    _nodeId1,
    _nodeId4,
    _nodeId3,
}
_nodeClient.SetNodeOrder(_ngOrder);
Run Code Online (Sandbox Code Playgroud)

当我得到方法并断言这里是代码:

Assert.That(_response[0].Id, Is.EqualTo(_node2Id);
Assert.That(_response[1].Id, Is.EqualTo(_node1Id);
Assert.That(_response[2].Id, Is.EqualTo(_node4Id);
Assert.That(_response[3].Id, Is.EqualTo(_node3Id);
Run Code Online (Sandbox Code Playgroud)

c# linq guid cassandra .net-standard-2.0

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