Учитывая, что у меня есть запрос, как это:Increment SQL столбец на основе другого
select employeeid as id, department as dep from employee where department in (...)
order by department
Я хотел бы иметь дополнительный столбец, который увеличивает на каждые 3 отделов, так что результат выглядит примерно так:
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
при запуске запроса с колонки раздела я получаю следующее сообщение об ошибке: Cannot find either column "sd" or the user-defined function or aggregate "sd.sdidataid", or the name is ambiguous.
Это код, чтобы создать две таблицы участвуют:
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
Могу ли я спросить вас цель магии? :) –
это надуманный пример, далекий от реальности :) Я буду использовать его для извлечения значений из массива в моем коде (уродливый) – oskbor
ewwwww ... Но вы должны делать то, что должны делать, не так ли? Если вам нужен другой взгляд, возможно, на ваш (уродливый) код, я готов к этому :) Итак, если вы предоставите большую картинку (не все), мы можем поставить вас на другой путь? :-) –