我正在转换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)
有更标准的方法吗?
我之前发过类似的东西,但我现在从另一个方向接近这个,所以我开了一个新问题.我希望这没关系.
我一直在与CTE合作,根据父母费用创建一笔费用.SQL和详细信息可以在这里看到:
我不认为我在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之外的任何内容时,查询都很慢.
我在这里有一个类似的问题:
其中使用函数来执行子行的汇总而不是CTE.这是使用CTE重写以避免我现在遇到的同样问题.我已经阅读了该答案中的回复,但我并不是更明智 - 我阅读了一些有关提示和参数的信息,但我无法使其发挥作用.我以为使用CTE重写可以解决我的问题.在具有几千行的tblCharge上运行时查询很快.
在SQL 2008 …
我需要通过Citrix会话获取运行我们的软件应用程序的台式计算机的本地计算机名称.当我查询时,My.Computer.Name我得到服务器的名称.
如何获取运行会话的实际物理计算机的名称,并且当有人将会话从一台计算机切换到另一台计算机时,我是否可以监视该事件?
是否有一种巧妙的方法将掩码应用于SQL Server查询中的字符串?
我有两个表,一个用电话号码存储为varchar,没有文字0155567890和电话类型,它有一个掩码用于该电话号码类型:(##) #### ####
返回字符串(对于合并文档)的最佳方法是什么,以便查询返回完全格式化的电话号码:
(01) 5556 7890
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用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) 我想创建一个函数,它返回一个临时的日期表,用于生成报告.我希望能够动态指定表的间隔.下面是一个封装我的问题的函数.
考虑:
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函数,我只是以此为例来突出我的问题).
干杯!
这一定很简单,但我似乎无法找到答案.
我有一个简单的查询:
SELECT InvoiceTotal, InvoiceDate, InvoiceNoUnit from InvoiceLineItem
Run Code Online (Sandbox Code Playgroud)
我希望从我的应用程序中显示在Crystal Reports中.我希望能够让用户更改一个参数,以便根据用户选择的粒度级别按日期对结果报告进行分组,而不是构建许多报告.
EG:我希望用户能够选择"按月",报告按月分组(相应的图表按月显示.然后用户"按周"运行报告,报告逐周更改.
我希望他们在我的应用程序中选择此项,并让我将参数传递给CR以更改分组.
有什么建议?
我在表单上有 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) 我在 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/dashboard和
https://localhost:4200/dashboardload child DashboardComponent。
第二个网址不应有效。为什么它有效?
这类是从前一个问题开始的:
根据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 ×4
sql-server ×4
.net ×2
angular ×2
c# ×1
citrix ×1
performance ×1
routes ×1
rxjs ×1
sql-function ×1
t-sql ×1
typescript ×1
xamarin ×1