필자가 필요로하고 예제를 찾을 수없는 질문/답변을 찾을 수 없습니다. 나는 창 함수를 사용하고 싶다.TSQL이 창을 넘었습니다.
I가 그 발동에 사용되는 저장 발동하고 테이블과 열 보유하고있는 다음 스키마 : 나는 테이블 이름 다른 절차 나타 횟수를 계산하려면
CREATE TABLE [dbo].[ProcedureDependencies](
[DatabaseName] [varchar](256) NOT NULL,
[ProcedureId] [int] NOT NULL,
[ProcedureSchemaName] [varchar](256) NOT NULL,
[ProcedureName] [varchar](256) NOT NULL,
[TableSchemaName] [varchar](256) NOT NULL,
[TableName] [varchar](256) NOT NULL,
[FieldName] [varchar](256) NOT NULL)
을 .
나는 다음의 변화를 시도하고있다 :
select
DatabaseName,
TableName,
count(tablename) over (partition by DatabaseName,ProcedureName) cnt
from ProcedureDependencies
order by cnt desc
을 그러나, 나는 나쁜 결과를 얻고있다. 내가 원하는에 따라 스크립트의 예를, .... 들어
databasename tablename cnt
db1 tbl1 3
db1 tbl2 1
db1 tbl3 1
그러나 나는군요 ....
databasename tablename cnt
db1 tbl1 3
db1 tbl2 3
db1 tbl3 3
db1 tbl1 1
스크립트 :
drop table #tmprmd;
create table #tmprmd (
DatabaseName varchar(max),
TableName varchar(max),
ProcedureName varchar(max),
FieldName varchar(max));
Insert Into #tmprmd
Values ('db1', 'tbl1', 'proc1', 'field1'),
('db1', 'tbl1', 'proc1', 'field2'),
('db1', 'tbl2', 'proc1', 'field1'),
('db1', 'tbl1', 'proc2', 'field1'),
('db1', 'tbl3', 'proc1', 'field1'),
('db1', 'tbl1', 'proc3', 'field1');
with
dist as (
select
--distinct
databasename,
procedurename,
tablename
from #tmprmd--ProcedureDependencies
)
select
distinct
DatabaseName,
TableName,
count(tablename) over (partition by DatabaseName,procedurename) cnt
from dist
order by cnt desc
Shorednt 4,1,1 원하는 결과가 있습니까? – Mihai
@Mihai 아니요, 3,1,1 – Vasily