i came across the scenario where user will upload the files(.png,.jpg etc) more than one at same time. when i want to take count of each file am facing difficulty.
below is table
declare @tab1 table
(
filenames NVARCHAR(MAX)
)
insert into @tab1(id,filenames) values('[{"file_name":"7HB1ms8g6y1AKGb4ucLqZPXy9H1vqWVj.png","file_type":"png"}]')
insert into @tab1(id,filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWbUtRdN.jpg","file_type":"jpg"},
{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbv9xvDGs.png","file_type":"png"}]')
insert into @tab1(id,filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWfedss.jpg","file_type":"jpg"},
{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"},
{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"}]')
declare @tab1 table
(
id int identity(1,1),
filenames NVARCHAR(MAX)
)
insert into @tab1(filenames) values('[{"file_name":"7HB1ms8g6y1AKGb4ucLqZPXy9H1vqWVj.png","file_type":"png"}]')
insert into @tab1(filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWbUtRdN.jpg","file_type":"jpg"}]')
insert into @tab1(filenames) values('[{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbv9xvDGs.png","file_type":"png"}]')
insert into @tab1(filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWfedss.jpg","file_type":"jpg"}]')
insert into @tab1(filenames) values('[{file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"}]')
insert into @tab1(filenames) values('[{file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"}]')
select filenames,count(filenames) from @tab1 group by filenames
by "get count of each file" do you mean .png, .jpg?
depending on what version of SQL You have you could leverage json functions
declare @tab_json table
(
id int identity(1,1),
filenames NVARCHAR(MAX)
)
insert into @tab_json(filenames) values('[{"file_name":"7HB1ms8g6y1AKGb4ucLqZPXy9H1vqWVj.png","file_type":"png"}]')
insert into @tab_json(filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWbUtRdN.jpg","file_type":"jpg"}]')
insert into @tab_json(filenames) values('[{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbv9xvDGs.png","file_type":"png"}]')
insert into @tab_json(filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWfedss.jpg","file_type":"jpg"}]')
insert into @tab_json(filenames) values('[{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"}]')
insert into @tab_json(filenames) values('[{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"}]')
--ALTER DATABASE sqlteam SET COMPATIBILITY_LEVEL = 130
select FileType, count(1)
from @tab_json c
CROSS APPLY OPENJSON(c.filenames)
WITH (FileName nvarchar(max) '$.file_name',
FileType nvarchar(255) '$.file_type'
) as jsonValues
group by FileType
If same i want to use in AWS then am getting below error how can i resolve it ?
Msg 319, Level 15, State 1, Line 20
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
declare @tab_json table
(
id int identity(1,1),
filenames NVARCHAR(MAX)
)
insert into @tab_json(filenames) values('[{"file_name":"7HB1ms8g6y1AKGb4ucLqZPXy9H1vqWVj.png","file_type":"png"}]')
insert into @tab_json(filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWbUtRdN.jpg","file_type":"jpg"}]')
insert into @tab_json(filenames) values('[{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbv9xvDGs.png","file_type":"png"}]')
insert into @tab_json(filenames) values('[{"file_name":"NNjK3Jv34yNF0EL7OVRIsKG8PWfedss.jpg","file_type":"jpg"}]')
insert into @tab_json(filenames) values('[{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"}]')
insert into @tab_json(filenames) values('[{"file_name":"K1knhuDq2OSnwQuzTF7cHhXHbhjsuns.png","file_type":"png"}]')
--ALTER DATABASE sqlteam SET COMPATIBILITY_LEVEL = 130
select FileType, count(1)
from @tab_json c
CROSS APPLY OPENJSON(c.filenames)
WITH (FileName nvarchar(max) '.file_name',
FileType nvarchar(255) '.file_type'
) as jsonValues
group by FileType
Msg 13607, Level 16, State 3, Line 15
JSON path is not properly formatted. Unexpected character '.' is found at position 0.
I modified your query and this is now working:
select FileType, count(1)
from #tab_json c
CROSS APPLY OPENJSON(filenames)
WITH (FileName nvarchar(max) '$.file_name',
FileType nvarchar(255) '$.file_type'
) as jsonValues
group by FileType