'SQL simplify the query or request an efficient way (i am new to SQL)

Is it possible to simplify the below query by reducing the table name repetition ? However, Its working for now, but I am not sure, whether it is an efficient way of writing the query or not. I would like to minimize the table names in the below query.

[![Output][1]][1]

Table Structure:

CREATE TABLE [dbo].[TestTable](
    [attr_id] [int] IDENTITY(1,1) NOT NULL,
    [attr_filter] [varchar](50) NULL,
    [attr_value] [varchar](100) NULL,
    [attr_key] [varchar](50) NULL
) 
GO

**Values to Insert:** 

Insert Into TestTable ([attr_id],[attr_filter],[attr_value],[attr_key])
Values (1,N'card_line_item_status',N'Assigned',N'card_line_item_status')
,(2,N'card_line_item_status',N'Hold',N'card_line_item_status')
,(3,N'card_line_item_status',N'In Progress',N'card_line_item_status')
,(4,N'card_line_item_status',N'Complete',N'card_line_item_status')
,(5,N'card_violation_types',N'Inactive Employee',N'card_violation_types')
,(6,N'card_violation_types',N'Location Mismatch',N'card_violation_types')
,(7,N'card_violation_types',N'Duplicate Card',N'card_violation_types')
,(8,N'card_violation_types',N'Cardholder Mismatch',N'card_violation_types')
,(9,N'payment_status',N'Cheque payment',N'Personal_Process')
,(10,N'payment_status',N'Payment to Adobe',N'Personal_Process')
,(11,N'payment_status',N'Electronic Payment (Personal)',N'Personal_Process')
,(12,N'action_taken',N'1st reminder set',N'Fraud_Process')
,(13,N'action_taken',N'2nd reminder set',N'Fraud_Process')
,(14,N'action_taken',N'JE needed',N'Fraud_Process')
,(15,N'action_taken',N'Dispute raised with bank/vendor',N'Fraud_Process')
,(16,N'action_taken',N'Credit submitted',N'Fraud_Process')
,(17,N'action_taken',N'Others',N'Fraud_Process')
,(18,N'status',N'Assigned',N'Personal_Process')
,(19,N'status',N'In Progress',N'Personal_Process')
,(20,N'status',N'Complete',N'Personal_Process')
,(21,NULL,N'Complete',N'adobe_sign_status')
,(22,NULL,N'Waiting for manager',N'adobe_sign_status')
,(23,NULL,N'Waiting for employee',N'adobe_sign_status')
,(24,NULL,N'Cancelled',N'adobe_sign_status')
,(25,N'status',N'Email Sent',N'Personal_Process')
,(26,N'status',N'Email Received',N'Personal_Process')
,(27,N'payment_status',N'Charge Off',N'Personal_Process')

Output should be like a javascript object like below, in the browser response:

{
  card_line_item_status: {},
  card_violation_types: {}
}
SELECT
 (
   SELECT
     [attr_value]
   FROM    dbo.Static_Attributes AS ac
   WHERE  attr_filter = 'card_line_item_status' FOR JSON PATH
 ) AS [card_line_item_status],
 (
   SELECT
     attr_value
   FROM   dbo.Static_Attributes AS ac
   WHERE  attr_filter = 'card_violation_types' FOR JSON PATH
 ) AS [card_violation_types],
 (
   SELECT
     attr_value
   FROM   dbo.Static_Attributes AS ac
   WHERE attr_key = 'Personal_Process' and attr_filter = 'payment_status' FOR JSON PATH
 ) AS [payment_status_list],
   ISNULL((SELECT 
   role_name
   FROM   assign_user_roles aur
         JOIN roles_list rl
         ON aur.role_id = rl.role_id
   WHERE  aur.[user_id] = @userId FOR JSON PATH), '[{"role_name": "OTHERS"}]')
    AS [roles],
 (
   SELECT
     attr_value
   FROM   dbo.Static_Attributes AS ac
   WHERE attr_key = 'Fraud_Process' and attr_filter = 'action_taken' FOR JSON PATH
 ) AS [action_taken_list],
 (
   SELECT
     attr_value
   FROM   dbo.Static_Attributes AS ac
   WHERE attr_key = 'Personal_Process' and attr_filter = 'status' FOR JSON PATH
 ) AS [personal_fraud_status],
 (
   SELECT
     attr_value
   FROM   dbo.Static_Attributes AS ac
   WHERE attr_key = 'adobe_sign_status' FOR JSON PATH
 ) AS [adobe_sign_status_list]```


[1]: https://i.stack.imgur.com/ltyhK.png


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source