Sql server 基于另一个SQL列的增量SQL列
考虑到我有这样一个问题:Sql server 基于另一个SQL列的增量SQL列,sql-server,Sql Server,考虑到我有这样一个问题: select employeeid as id, department as dep from employee where department in (...) order by department id dep magic 1 Accounting 0 30 Accounting 0 66 HR 0 67 HR 0 33 HR 0 2 Sales 0 9 IT 1
select employeeid as id, department as dep from employee where department in (...)
order by department
id dep magic
1 Accounting 0
30 Accounting 0
66 HR 0
67 HR 0
33 HR 0
2 Sales 0
9 IT 1
12 R&D 1
19 Design 1
45 QA 2
46 QA 2
我希望有一个额外的列,每3个部门增加一个列,结果如下所示:
select employeeid as id, department as dep from employee where department in (...)
order by department
id dep magic
1 Accounting 0
30 Accounting 0
66 HR 0
67 HR 0
33 HR 0
2 Sales 0
9 IT 1
12 R&D 1
19 Design 1
45 QA 2
46 QA 2
我尝试过各种行号函数,以及其他伏都教,但我似乎无法正确使用。希望你能帮我做这个
编辑:所以这并不像我希望的那样直截了当。上面的例子可能没有涵盖我的案例中涉及的所有问题。
这就是我正在运行的真正查询:
select sdi.sdcid
,sdi.keyid1
,sdi.paramlistid
,sdi.paramlistversionid
,sdi.variantid
,sdi.dataset
,sdi.paramid
,sdi.paramtype
,sdi.replicateid
,sd.sdidataid
--(ROW_NUMBER() over(order by sd.sdidataid asc) -1) /3 partition
from sdidataitem sdi
left join sdidata sd on
sdi.keyid1 = sd.keyid1
and sdi.keyid2 = sd.keyid2
and sdi.keyid3 = sd.keyid3
and sdi.paramlistid = sd.paramlistid
and sdi.paramlistversionid = sd.paramlistversionid
and sdi.variantid = sd.variantid
and sdi.dataset = sd.dataset
where sd.sdidataid in (select top 30 sdidataid from sdidata)
and sdi.u_analysserieid is null
order by sd.sdidataid asc
当我使用分区列运行查询时,会出现以下错误:找不到列sd或用户定义函数或聚合sd.sdidataid,或者名称不明确。
这是创建所涉及的两个表的代码:
CREATE TABLE [lv2056d].[sdidata] (
[sdcid] nvarchar(40) NOT NULL,
[keyid1] nvarchar(40) NOT NULL,
[keyid2] nvarchar(40) NOT NULL,
[keyid3] nvarchar(40) NOT NULL,
[paramlistid] nvarchar(40) NOT NULL,
[paramlistversionid] nvarchar(40) NOT NULL,
[variantid] nvarchar(40) NOT NULL,
[dataset] numeric(18,0) NOT NULL,
[limitruleid] nvarchar(40) NULL,
[limitruleversionid] nvarchar(40) NULL,
[modifiableflag] nvarchar(1) NULL,
[approvalsequenceflag] nvarchar(1) NULL,
[approvalpassrule] nvarchar(20) NULL,
[condition] nvarchar(80) NULL,
[availabilityflag] nvarchar(1) NULL,
[workflowid] nvarchar(40) NULL,
[workflowversionid] nvarchar(40) NULL,
[workflowinstance] numeric(18,0) NULL,
[usersequence] numeric(18,0) NULL,
[notes] nvarchar(2000) NULL,
[auditsequence] numeric(18,0) NULL,
[auditdeferflag] nvarchar(1) NULL,
[tracelogid] nvarchar(40) NULL,
[createdt] datetime NULL,
[createby] nvarchar(40) NULL,
[createtool] nvarchar(20) NULL,
[moddt] datetime NULL,
[modby] nvarchar(40) NULL,
[s_datasetstatus] nvarchar(20) NULL,
[modtool] nvarchar(20) NULL,
[s_notebookreference] nvarchar(20) NULL,
[s_assignedanalyst] nvarchar(40) NULL,
[s_instrumentid] nvarchar(40) NULL,
[s_icoverriddenflag] nvarchar(1) NULL,
[s_retestedflag] nvarchar(1) NULL,
[s_remeasuredflag] nvarchar(1) NULL,
[s_remeasureinstance] numeric(18,0) NULL,
[s_qcbatchid] nvarchar(40) NULL,
[s_qcbatchitemid] nvarchar(20) NULL,
[trackitemid] nvarchar(40) NULL,
[scheduleplanid] nvarchar(40) NULL,
[scheduleplanitemid] nvarchar(40) NULL,
[uniquenessflag] nvarchar(1) NULL,
[approvalflag] nvarchar(1) NULL,
[sdidataid] nvarchar(40) NULL,
[sourceworkitemid] nvarchar(40) NULL,
[sourceworkiteminstance] numeric(18,0) NULL,
[s_cancellableflag] nvarchar(1) NULL,
[documentid] nvarchar(40) NULL,
[documentversionid] nvarchar(40) NULL,
[blockflag] nvarchar(1) NULL,
[activeflag] nvarchar(1) NULL,
[s_assigneddepartment] nvarchar(40) NULL,
[s_instrumentusedflag] nvarchar(1) NULL,
CONSTRAINT [xpksdidata] PRIMARY KEY CLUSTERED([sdcid],[keyid1],[keyid2],[keyid3],[paramlistid],[paramlistversionid],[variantid],[dataset]))
GO
CREATE TABLE [lv2056d].[sdidataitem] (
[sdcid] nvarchar(40) NOT NULL,
[keyid1] nvarchar(40) NOT NULL,
[keyid2] nvarchar(40) NOT NULL,
[keyid3] nvarchar(40) NOT NULL,
[paramlistid] nvarchar(40) NOT NULL,
[paramlistversionid] nvarchar(40) NOT NULL,
[variantid] nvarchar(40) NOT NULL,
[dataset] numeric(18,0) NOT NULL,
[paramid] nvarchar(40) NOT NULL,
[paramtype] nvarchar(80) NOT NULL,
[replicateid] numeric(18,0) NOT NULL,
[aliasid] nvarchar(80) NULL,
[mandatoryflag] nvarchar(1) NULL,
[datatypes] nvarchar(20) NULL,
[enteredvalue] numeric(28,10) NULL,
[enteredtext] nvarchar(255) NULL,
[enteredunits] nvarchar(40) NULL,
[operatorrule] nvarchar(255) NULL,
[transformvalue] numeric(28,10) NULL,
[transformdt] datetime NULL,
[transformtext] nvarchar(255) NULL,
[transformrule] nvarchar(4000) NULL,
[displayvalue] nvarchar(255) NULL,
[displayunits] nvarchar(40) NULL,
[displayformat] nvarchar(255) NULL,
[rangeoperator] nvarchar(20) NULL,
[enteredqualifier] nvarchar(20) NULL,
[entrysdcid] nvarchar(40) NULL,
[entryreftypeid] nvarchar(40) NULL,
[calcrule] nvarchar(4000) NULL,
[measurementactionid] nvarchar(40) NULL,
[releasedflag] nvarchar(1) NULL,
[valuestatus] nvarchar(20) NULL,
[condition] nvarchar(80) NULL,
[transformdeferflag] nvarchar(1) NULL,
[textcolor] numeric(18,0) NULL,
[usersequence] numeric(18,0) NULL,
[notes] nvarchar(2000) NULL,
[auditsequence] numeric(18,0) NULL,
[auditdeferflag] nvarchar(1) NULL,
[tracelogid] nvarchar(40) NULL,
[createdt] datetime NULL,
[createby] nvarchar(40) NULL,
[createtool] nvarchar(20) NULL,
[moddt] datetime NULL,
[modby] nvarchar(40) NULL,
[modtool] nvarchar(20) NULL,
[s_acoverriddenflag] nvarchar(1) NULL,
[s_analystid] nvarchar(40) NULL,
[s_qcevalstatus] nvarchar(20) NULL,
[displayvalueformat] nvarchar(255) NULL,
[calcexcludeflag] nvarchar(1) NULL,
[sdidataitemid] nvarchar(40) NULL,
[instrumentid] nvarchar(40) NULL,
[instrumentfieldid] nvarchar(20) NULL,
[activeflag] nvarchar(1) NULL,
[externalreference] nvarchar(255) NULL,
[resulttimeoffset] numeric(28,10) NULL,
[u_analysserieid] nvarchar(20) NULL,
[u_showindataentry] nvarchar(20) NULL,
[w_instrumentid] nvarchar(20) NULL,
[u_defvalset] nvarchar(20) NULL,
CONSTRAINT [xpksdidataitem] PRIMARY KEY CLUSTERED([sdcid],[keyid1],[keyid2],[keyid3],[paramlistid],[paramlistversionid],[variantid],[dataset],[paramid],[paramtype],[replicateid]))
GO
您可以在…/三,
select employeeid as id, department as dep ,
(row_number() over (order by department asc) -1) /3 partition
from employee
where department in (...)
order by department
关于你的问题。
1您似乎在第一个字段后漏掉了逗号
2如果您真的要连接表,最好使用join,这只是为了清楚起见
select sd.sdidataid, (ROW_NUMBER() over(order by sd.sdidataid asc) -1) /3 partition
from sdidataitem sdi inner join sdidata sd on
sdi.keyid1 = sd.keyid1 (... more column restrictions)
and sdi.dataset = sd.dataset
where sd.sdidataid in (select top 30 sdidataid from sdidata)
and sdi.u_analysserieid is null
order by sd.sdidataid asc
我可以问你魔术的目的吗这是一个与现实相去甚远的人为示例:我将使用它从我的代码UGLYEWWWW中的数组中获取值。。。但你必须做你必须做的,对吗?如果你想在你丑陋的代码上有一个不同的外观,我很乐意:所以如果你提供更大的图片,而不是全部,我们可能会让你走上一条不同的道路:-@danihp-他说他希望每3个部门的价值都能增加。我就是这么做的。您的值将每三行递增一次,而不是每三行递增一次departments@oskbor-向您展示查询,我如何知道它有什么问题。这是真正失败的查询:选择sdidata.sdidataid行\ U编号按sdidata.sdidataid asc排序,从sdidataitem中选择1/3分区,sdidata,其中sdidataitem.keyid1=sdidata.keyid1。。。更多列限制和sdidataitem.dataset=sdidata.dataset和sdidata.sdidataid在从sdidata和sdidataitem.u_中选择前30个sdidataid中按sdidata和sdidataitem.u分析IEID的顺序为空。sdidataid asc无法找到列sdidata或用户定义的函数或聚合sdidata.sdidataid,或者名称不明确。@oskbor查询是否在从sdidata条件中选择前30个sdidataid时使用行\号而不使用此sd.sdidataid?如果是,请在从sdidata sd2中选择前30个sdidataid中为子查询sd.sdidataid添加别名