小编bil*_*nkc的帖子

在SQL Server2008中使用Sumif

我目前是一名医疗保健分析师.过去几年我一直在使用Microsoft Access来查询和生成报告.我的公司现在希望我学习,扩展我的SQL知识并每天使用SQL Server2008.

我在理解Access和SQL之间的差异方面取得了一些进展,但它们仍然是我不熟悉的很多东西.

我想深入了解子查询,以及如何在SQL中使用SUMIF.下面我已经粘贴了步骤(1)我放在一起的SQL子查询的第一部分.步骤(2)是我想要转换为SQL的Microsoft Access的SQL视图,但是需要对SUMIF语句的正确语法有所了解.

任何见解都非常感谢...

步骤(1)SQL Server 2008:

SELECT
    [GROUPING_OF_CLINIC_ID].CLINIC_ID
,   OUTPAT_ACCT_REC.CHARGE_CLASS
,   [GROUPING_OF_CLINIC_ID].PATIENT_NUMBER
,   [GROUPING_OF_CLINIC_ID].REGISTRATION_CD
,   OUTPAT_REGISTER.PRIMARY_FINAN
,   REPLACE(CONVERT(varchar(10), OUTPAT_ACCT_REC.ENTRY_DATE, 101), '/', '') AS ENTRY_DATE
,   SUM(ENTRY_AMOUNT) AS ENTRY_AMOUNT
FROM
    OUTPAT_REGISTER
    LEFT JOIN 
        OUTPAT_BILL_REF
        ON 
        (
            OUTPAT_REGISTER.PATIENT_NUMBER = OUTPAT_BILL_REF.PATIENT_NUMBER
        )
            AND (OUTPAT_REGISTER.REGISTRATION_CD = OUTPAT_BILL_REF.REGISTRATION_CD)
    LEFT JOIN 
        OUTPAT_ACCT_REC
        ON 
        (
            OUTPAT_BILL_REF.PATIENT_NUMBER = OUTPAT_ACCT_REC.PATIENT_NUMBER
        )
            AND (OUTPAT_BILL_REF.BILL_REFERENCE = OUTPAT_ACCT_REC.REFERENCE_NUM)
    LEFT JOIN
        (
            SELECT
                CLINIC_ID
            ,   PATIENT_NUMBER
            ,   REGISTRATION_CD
            FROM
                OP_VISIT_HISTRY
            GROUP BY
                CLINIC_ID
            ,   PATIENT_NUMBER …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

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

从SSIS/DTSX包中提取SQL语句

我正在寻找一些东西来提取我的SSIS/DTSX包中的所有SQL查询.但到目前为止没有什么能帮到我.

我已经看过Microsoft的Microsoft.SqlServer.DTS API了.但他们正在直接提取一些问题.但是DTS中存在的查询:变量 TAG,它们不被提取.

我想要.Net框架中的东西.因为我需要使用输出来执行其他任务.我正在使用C#.

示例代码如下.不解决所有情况

// this function takes the list of task hosts as input
// and gives all the queries present in taskhosts.

public static string ExtractQueriesFromTasks(List<TaskHost> Tasks)
{
    string src_query = "";
    foreach (TaskHost executable in Tasks)
    {
        DtsContainer Seq_container = (DtsContainer)executable;
        if (executable.InnerObject.GetType().Name == "ExecuteSQLTask")
        {
            ExecuteSQLTask sqlTask = (ExecuteSQLTask)executable.InnerObject;
            string src_query2 = sqlTask.SqlStatementSource;

            src_query = src_query + "\n" + src_query2.ToUpper();
        }
        if (executable.InnerObject.GetType().Name == "__ComObject")
        {
            IDTSPipeline100 sqlTask = (IDTSPipeline100)executable.InnerObject;
            Console.WriteLine(Microsoft.VisualBasic.Information.TypeName(executable.InnerObject)); …
Run Code Online (Sandbox Code Playgroud)

sql-server ssis visual-studio

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

实体框架代码优先:SaveChanges不是原子的

我有以下非常简单的单元测试,它重现了DbContext.SaveChanges不是原子的情况.非原子意味着可以在完成所有提交之前读取提交的数据.

添加任务:在循环中,添加新的TestEntity和ReferencingEntity.验证任务:检查是否存在未被任何ReferencingEntity引用的TestEntity - 由于我添加实体的方式,这不应该发生.

单元测试失败......有什么建议吗?

编辑:根据接受的答案 - 为了使用建议的解决方案运行单元测试,添加InitTest方法:

using (var context = new TestContext())
{
    var objectContext = (context as IObjectContextAdapter).ObjectContext;
    objectContext.ExecuteStoreCommand(string.Format("ALTER DATABASE [{0}] SET READ_COMMITTED_SNAPSHOT ON", context.GetType().FullName));
}
Run Code Online (Sandbox Code Playgroud)

单元测试:

using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Atlit.Server.Tests.Integration.SessionProcessing
{
    class TestContext : DbContext
    {
        public DbSet<TestEntity> TestEntities { get; set; }
        public DbSet<ReferencingEntity> ReferencingEntities { get; set; }
    }

    class TestEntity
    {
        public int TestEntityId { get; set; }
    }

    class ReferencingEntity
    {
        public int ReferencingEntityId { get; …
Run Code Online (Sandbox Code Playgroud)

entity-framework atomic ef-code-first dbcontext

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

SSDT 2012 - ssis部署错误

我正在尝试使用Deploy选项部署SSDT 2012 SSIS项目.但我得到以下错误:

标题:SQL Server Integration Services

执行用户定义的例程或聚合"deploy_project_internal"期间发生.NET Framework错误:System.ComponentModel.Win32Exception:客户端System.ComponentModel.Win32Exception不保存所需的权限:在Microsoft.SqlServer.IntegrationServices.Server.ISServerProcess .StartProcess(Boolean bSuspendThread)位于Microsoft.SqlServer.IntegrationServices.Server.ServerApi.DeployProjectInternal(SqlInt64 deployId,SqlInt64 versionId,SqlInt64 projectId,SqlString projectName).(Microsoft SQL Server,错误:6522)

如需帮助,请单击:http://go.microsoft.com/fwlink?ProdName = Microsoft%20SQL%20Server&ProdVer = 11.00.5058&EvtSrc = MSSQLServer&EvidID = 6522&LinkId = 20476

知道为什么这个错误?下面是错误的屏幕截图.

在此输入图像描述

ssis

8
推荐指数
2
解决办法
6831
查看次数

批处理文件上有多个选项菜单?

嗨,我想制作批处理文件菜单,询问"选择要安装的应用程序?" 例如

  1. APP1
  2. 应用2
  3. APP3
  4. APP4
  5. APP5
  6. 所有应用

选择什么应用程序:_

我想要的是,例如我想安装App2,App3和App5,所以我可以通过App ID的'选择什么应用程序:2,3,5'来输入.当用户选择选项6时,它将安装所有应用程序!

我知道这可以用于bash脚本,但我不确定批处理脚本?

批处理菜单的一个示例是http://mintywhite.com/software-reviews/productivity-software/create-multiple-choice-menu-batchfile/

batch-file

7
推荐指数
4
解决办法
6万
查看次数

缩小SQL Server数据库无法正常工作

我不是DBA但我需要缩小数据库,我尝试使用SSMS接口缩小它并不起作用.

统计数据如下:

  • 大小:235,013.00 MB
  • 可用空间:65,587.59 MB

我也尝试过这个DBCC SHRINKDATABASE ... TRUNCATEONLY命令,也没有改变任何东西.

如何在不丢失数据的情况下缩小此DB(将未使用的空间释放到OS)?

sql-server sql-server-2008-r2

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

在ssis中使用派生列连接列

我想要实现的是Column 5:

Column 1 Columns 2 Column 3 Column 4  Column 5
A        B                  D         A|B|D
Run Code Online (Sandbox Code Playgroud)

我使用了派生列:

(DT_STR,50,1252)([A] + "|" + [B] + "|" + [C] + "|" + [D])
Run Code Online (Sandbox Code Playgroud)

但我结束了:

Column 1 Columns 2 Column 3 Column 4  Column 5
A        B                  D         A|B||D
Run Code Online (Sandbox Code Playgroud)

我很难找到合适的解决方案.

ssis

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

SQL Server 2012关键字覆盖

我已经知道的一个问题没有很好的答案.

我有一个我无法改变的第三方应用程序.应用程序的数据库已从MS Access转换为SQL Server 2012.该程序与ODBC连接,不关心后端.它发送非常直接的SQL,似乎也适用于SQL Server.

但是有一个表有一个名为"PLAN"的表,我已经知道它是一个SQL Server关键字.

我知道您通常会使用方括号访问这样的表,但由于我无法更改SQL,我想知道是否有任何"丑陋"的黑客可以覆盖关键字或动态转换SQL.

sql sql-server-2012

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

SSIS包在Visual Studio,AND命令行中工作,但在Agent中不工作

我有一个SSIS包,我使用VS在服务器上开发.该程序包在Visual Studio中运行良好,但是当我在SQL Server代理中添加作业时,程序包将失败.我从SAGE Line 50 v19中提取数据,因此ODBC驱动程序是32位.我在64位环境中运行.已经将odbc设置为32位,确保代理程序设置为运行32位,但是sill遇到错误.我已经测试过从命令行运行包,如下所示

"C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe" /FILE "E:\Reporting\Projects\SSIS\SSIS2012\SSIS2012\Package1.dtsx" /DECRYPT password /CHECKPOINTING OFF  /REPORTING EWCDI
Run Code Online (Sandbox Code Playgroud)

当我运行它时,这很好用.但是,当我设置一个sql代理作业作为"操作系统(CmdExec)"运行时,我得到以下输出.

Microsoft (R) SQL Server Execute Package Utility
Version 11.0.2100.60 for 32-bit
Copyright (C) Microsoft Corporation. All rights reserved.

Started:  13:30:44
Info: 2015-02-24 13:30:44.45
   Code: 0x40016044
   Source: Data Flow Task Data Flow Task (SSIS.Pipeline)
   Description: Attempting to upgrade "ODBC Source". The package is attempting to upgrade an extensible object.
End Info
Error: 2015-02-24 13:30:44.59
   Code: 0xC0014020
   Source: SSIS002_SageCompany5Import Connection manager "Sage005.Manager" …
Run Code Online (Sandbox Code Playgroud)

odbc ssis sage-erp

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

如何加载混合记录类型的定宽文件?并且文件包含两个头

我有一个任务来加载格式异常的文本文件。该文件也包含不需要的数据。它包含两个连续的标头,每个标头的数据在备用行上指定。标题行从之后开始------。我需要同时读取标头及其对应的数据,并使用将其转储到某些Excel /表目标中。让我知道如何使用SSIS中的任何转换或脚本来解决此问题。不知道该如何使用脚本任务。

现在,我正在读取文件的一列,并使用派生的列手动尝试使用substring功能对其进行拆分。但这仅适用于一个标头,并且编码类型太硬。我需要一些动态方法来直接读取标题行和数据行。

输入文件:

A1234-012                                         I N F O R M A T I C S  C O M P A N Y                                      08/23/17
PAGE    2 BATCH ABC                                           PAYMENT DATE & DUE DATE                                 EDIT PAGE  481
------------------------------------------------------------------------------------------------------------------------------------
 SEO  XRAT CLT     LOAN      OPENING  PAYMENT MATURIUH LOAN NEXE ORIG-AMT   OFF TO CATE  CONTC MON NO.TO  TOL NEL   S CUP CO IND PAT
 NOM  CODE NOM    NOMTER      DATE    DUO DATE  DATE   TIME PT #  MONEY         AQ LOAN  NUMBER    BLOCK …
Run Code Online (Sandbox Code Playgroud)

sql-server csv ssis etl flat-file

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