小编Mol*_*och的帖子

是否有一种优雅的方法来在SQL插入语句中反转位值?

我正在转换SQL Server中的一些数据:

INSERT INTO MYTABLE (AllowEdit)
(Select PreventEdit from SOURCETABLE)
Run Code Online (Sandbox Code Playgroud)

所以我需要从源表中反转位值.我期望NOT工作,因为这是我在代码中的方式,但事实并非如此.我能想到的最优雅的方式是:

INSERT INTO MYTABLE (AllowEdit)
(Select ABS(PreventEdit -1) from SOURCETABLE)
Run Code Online (Sandbox Code Playgroud)

有更标准的方法吗?

sql sql-server bit-manipulation

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

加入时CTE非常慢

我之前发过类似的东西,但我现在从另一个方向接近这个,所以我开了一个新问题.我希望这没关系.

我一直在与CTE合作,根据父母费用创建一笔费用.SQL和详细信息可以在这里看到:

关于多个键控表的CTE索引建议

我不认为我在CTE上遗漏任何东西,但是当我使用一个大数据表(350万行)时,我遇到了问题.

该表tblChargeShare包含了我需要的其他一些信息,例如InvoiceID,因此我将CTE放在视图中vwChargeShareSubCharges并将其加入到表中.

查询:

Select t.* from vwChargeShareSubCharges t
inner join 
tblChargeShare  s 
on t.CustomerID = s.CustomerID 
and t.MasterChargeID = s.ChargeID 
Where  s.ChargeID = 1291094
Run Code Online (Sandbox Code Playgroud)

返回几毫秒的结果.

查询:

Select ChargeID from tblChargeShare Where InvoiceID = 1045854
Run Code Online (Sandbox Code Playgroud)

返回1行:

1291094
Run Code Online (Sandbox Code Playgroud)

但查询:

Select t.* from vwChargeShareSubCharges t
inner join 
tblChargeShare  s 
on t.CustomerID = s.CustomerID 
and t.MasterChargeID = s.ChargeID 
Where  InvoiceID = 1045854
Run Code Online (Sandbox Code Playgroud)

需要2-3分钟才能运行.

我保存了执行计划并将它们加载到SQL Sentry中.快速查询的树看起来像这样:

快速查询

慢查询的计划是:

慢查询

我尝试重新索引,通过调优顾问程序和子查询的各种组合运行查询.每当连接包含除PK之外的任何内容时,查询都很慢.

我在这里有一个类似的问题:

SQL Server查询超时取决于Where子句

其中使用函数来执行子行的汇总而不是CTE.这是使用CTE重写以避免我现在遇到的同样问题.我已经阅读了该答案中的回复,但我并不是更明智 - 我阅读了一些有关提示和参数的信息,但我无法使其发挥作用.我以为使用CTE重写可以解决我的问题.在具有几千行的tblCharge上运行时查询很快.

在SQL 2008 …

sql common-table-expression sql-server-2008-r2

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

通过.NET中的Citrix会话获取本地计算机名称

我需要通过Citrix会话获取运行我们的软件应用程序的台式计算机的本地计算机名称.当我查询时,My.Computer.Name我得到服务器的名称.

如何获取运行会话的实际物理计算机的名称,并且当有人将会话从一台计算机切换到另一台计算机时,我是否可以监视该事件?

.net citrix

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

应用掩码在SQL Server查询/视图中格式化字符串

是否有一种巧妙的方法将掩码应用于SQL Server查询中的字符串?

我有两个表,一个用电话号码存储为varchar,没有文字0155567890和电话类型,它有一个掩码用于该电话号码类型:(##) #### ####

返回字符串(对于合并文档)的最佳方法是什么,以便查询返回完全格式化的电话号码:

(01) 5556 7890
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

从Xamarin调用PutAsJsonAsync的异常

我正在尝试使用WebApi编写一个小型测试应用程序.我主要使用它,我能够从我的Web服务获取数据并在Android中显示它.

我添加了一个按钮,并使用了我在Winforms测试客户端中使用的相同代码:

   async void buttonSave_Clicked(object sender, EventArgs e)
    {
        HttpClient client = new HttpClient ();
        Customer data = new Customer () {
        Surname = editSurname.Text,
        GivenName = editGivenName.Text};

        var result = await client.PutAsJsonAsync("http://10.0.0.4/WebApplication1/api/Customers/2", data);
       if (result.IsSuccessStatusCode ) {
       labelStatus.Text = "Saved";
       }
    }
Run Code Online (Sandbox Code Playgroud)

这在Windows窗体测试应用程序中工作正常,但在Xamarin应用程序中,我在client.PutAsJsonAsync上获得异常:

E/mono-rt(7519):[错误]致命未处理异常:System.TypeLoadException:无法从程序集'System.Net.Http.Formatting,版本加载类型'System.Net.Http.ObjectContent`1 [T]' = 5.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'.

有什么建议?使用Xamarin 3.

编辑:

如果我手动格式化内容,它可以工作:

        string sData =   Newtonsoft.Json.JsonConvert.SerializeObject(data);

        HttpContent content = new System.Net.Http.StringContent(sData, System.Text.Encoding.UTF8,  "application/json") ;
        var result = await client.PutAsync("http://10.0.0.4/WebApplication1/api/Customers/2",content);
Run Code Online (Sandbox Code Playgroud)

据我所知,我的所有参考文献都是正确的.我使用了WebApi Client nuget包.

参考文献:

Newtonsoft.Json
System.Net.Http
System.Net.Http.Extensions …
Run Code Online (Sandbox Code Playgroud)

.net c# dotnet-httpclient xamarin

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

将Interval参数传递给SQL中的Function

我想创建一个函数,它返回一个临时的日期表,用于生成报告.我希望能够动态指定表的间隔.下面是一个封装我的问题的函数.

考虑:

CREATE FUNCTION [dbo].[DateAdder]
(@DateStart datetime,
@increment int,
@interval ?????)
Returns datetime
AS
BEGIN
Declare @Return datetime
SELECT @Return = DATEADD(@interval, @increment, @DateStart)
return @Return
END
Run Code Online (Sandbox Code Playgroud)

有没有办法将"间隔"传递给这个函数?

(显然,我不是要重写DATEADD函数,我只是以此为例来突出我的问题).

干杯!

sql-server

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

Crystal Reports中按年,月,周,日动态分组

这一定很简单,但我似乎无法找到答案.

我有一个简单的查询:

SELECT InvoiceTotal, InvoiceDate, InvoiceNoUnit from InvoiceLineItem
Run Code Online (Sandbox Code Playgroud)

我希望从我的应用程序中显示在Crystal Reports中.我希望能够让用户更改一个参数,以便根据用户选择的粒度级别按日期对结果报告进行分组,而不是构建许多报告.

EG:我希望用户能够选择"按月",报告按月分组(相应的图表按月显示.然后用户"按周"运行报告,报告逐周更改.

我希望他们在我的应用程序中选择此项,并让我将参数传递给CR以更改分组.

有什么建议?

crystal-reports

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

停止 Angular 中的无限循环反应式表单控制更新

我在表单上有 2 个输入,一个名为“ageMonths”的数字输入,以及一个名为“dateOfBirth”的日期选择器。

我希望用户能够输入年龄的月份,或使用日期选择器选择出生日期 (dob)。如果他们从日期选择器输入 dob,我希望月份字段更新为以月为单位的年龄。如果他们输入以月为单位的年龄,我希望日期选择器跳转到该日期。我正在使用反应形式。

我添加了一个类级别变量来保存一个切换,每次任一控件的值发生更改时都会读取并设置该切换。但这并没有按预期工作,我认为是由于事件没有按照我期望的顺序触发。

我需要做什么才能使这项工作成功?

我的代码是:

ignoreDateUpdate = false;
form: FormGroup;
...
constructor(...){
this.form = new FormGroup({
    dateOfBirth: new FormControl({ value: new Date()}),
    ageMonths: new FormControl({ value: 0 }),
    ...
});
...
this.form.get('ageMonths').valueChanges.subscribe(
m => {
    if (ignoreDateUpdates) {return};
    ignoreDateUpdates = true;
    <code to set DateSelectorValue>
    ignoreDateUpdates = false;
    });
this.form.get('dateOfBirth').valueChanges.subscribe(
dob => {
    if (ignoreDateUpdates) {return};
    ignoreDateUpdates = true;
    <code to set MonthsInput>
    ignoreDateUpdates = false;
});
}
Run Code Online (Sandbox Code Playgroud)

rxjs angular angular-reactive-forms

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

Angular 子路由无需父路由即可导航

我在 Angular 13 应用程序中有一些路由,它们加载包含许多子路由的其他模块。

我的路由是在每个模块中设置的:

@NgModule({
    declarations: [DashboardComponent],
    imports: [RouterModule.forChild(childRoutes)]})
export class ChildModule{}

export const childRoutes = [
    {path: 'dashboard', component: DashboardComponent},
    {path: 'reports', component: ReportsComponent}];
Run Code Online (Sandbox Code Playgroud)

我的父模块延迟加载子模块:

export const appRoutes = [
    {path: 'store', component: StoreLayoutComponent,
     loadChildren: () => import('app/store/child.module').then(m => m.ChildModule)}];

@NgModule({
    imports: [
    ...
    RouterModule.forRoot(appRoutes)
    ],
    ...})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

urlhttps://localhost:4200/store/dashboardhttps://localhost:4200/dashboardload child DashboardComponent

第二个网址不应有效。为什么它有效?

routes typescript angular

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

使用函数的SQL Server查询非常慢

这类是从前一个问题开始的:

SQL Server查询超时取决于Where子句

根据where子句,查询运行速度非常慢.我重写了该查询使用CTE并很好地避免了问题,但从未找到答案.

另外一个类似的查询最近被调整为添加另一个字段,突然它的性能从大约需要30秒才能运行并返回10,000行,超过10个小时(并最终返回相同的结果集).今天我开始对这个进行故障排除,发现了一些奇怪的东西.

我一直需要从datetime值中提取日期唯一部分,因此我将逻辑写入函数:

CREATE FUNCTION [dbo].[cDate] ( @pInputDate    DATETIME )
RETURNS DATETIME
BEGIN
        RETURN CAST(CONVERT(VARCHAR(10), @pInputDate, 111) AS DATETIME)
END
GO
Run Code Online (Sandbox Code Playgroud)

我发现在这个新的低效查询中,如果我用查询中的CAST(CONVERT(VARCHAR(10), @pInputDate, 111) AS DATETIME)内联替换了该函数,查询执行的速度从大约10小时降到了不到2秒.我看到估计的执行计划没有区别.顺便说一句,这不是添加的领域.我假设添加其他字段以某种方式导致执行计划改变并放大上述条件.

我的问题是,这是正常的吗?如上所述,我使用重复过程的函数,因为如果你找到一种更有效的方法,它们更容易维护,记忆和更新.我应该为我的功能做些什么来提高他们的表现吗?

sql t-sql sql-server performance sql-function

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