我不确定该标题是否有意义。这个问题是与我先前问过的问题here
有关的更深入的问题我们的软件有一个执行日志,我能够捕获此强大的查询。 基本上,它会拉出所有可能的列,但仅拉动需要查看的几行。然后介绍该软件如何仅在用户已保存的视图中显示列。我想从此查询中获取结果以仅显示与该其他查询匹配的列:
SELECT *
FROM list_config
WHERE list_config.config_name = 'username'
AND list_config.visible = 'Y';
最强壮的人
SELECT DISTINCT
wo.id AS wo_id,
wo.create_date,
wo.priority,
wo.activity_status_id,
wo.short_description,
wo.ops_note,
CONVERT(varchar(1000), task.description) AS description,
customer.customer_name,
customer.account_manager,
task.id AS task_id,
wo.type_of,
CASE WHEN wo.type_of = 'R' THEN 'Request' WHEN wo.type_of = 'P' THEN 'Project' END AS type_descr,
wo.project_class_id,
CASE WHEN (task.ovr_bill_status IS NOT NULL) THEN task.ovr_bill_status ELSE task.bill_status END AS bill_status,
wo.customer_id,
customer.support_who,
customer.programmer,
customer.proj_manager,
customer.customer_class,
customer.date_go_live,
customer.within_golive_days,
wo.resp_user_id,
task.plan_hours AS plan_hours,
task.actual_hours AS actual_hours,
task.plan_start_date AS plan_start_date,
task.plan_finish_date AS plan_finish_date,
wo.release_id,
customer.timezone,
wo.update_date,
wo.grouping_id,
wo.grouping_id2,
users.avail_status AS acct_manager_available
FROM task,
work_order AS wo
LEFT OUTER JOIN customer ON wo.customer_id = customer.code_id
AND customer.company_id = 'MCLD'
LEFT OUTER JOIN users ON users.id = customer.account_manager
AND users.company_id = 'MCLD',
assignment
WHERE task.company_id = 'MCLD'
AND wo.status <> 'V'
AND task.status <> 'C'
AND assignment.is_complete = 'N'
AND wo.customer_id NOT IN ('ZZZZ')
AND task.work_order_id = wo.id
AND wo.company_id = 'MCLD'
AND task.id = assignment.task_id
AND wo.id = assignment.work_order_id
AND assignment.assigned_user_id IN ('SLSSVC')
AND assignment.company_id = 'MCLD'
ORDER BY wo.create_date;
这是表list_config中所有列的选择,方法是选择前1000名
SELECT TOP (1000) [company_id]
,[column_width]
,[config_name]
,[field_name]
,[grid_name]
,[sequence]
,[visible]
,[column_alignment]
,[config_owner]
,[sort_order]
,[grid_odd_row_color]
,[sort_sequence]
,[grid_even_row_color]
FROM [list_config]
答案 0 :(得分:0)
在另一个问题中查看了list_config的列之后,您应该只能够将wo.customer_id
到list_config.customer_id
并将条件从较小的语句添加到主语句中即可。
SELECT DISTINCT
wo.id AS wo_id,
wo.create_date,
wo.priority,
wo.activity_status_id,
wo.short_description,
wo.ops_note,
CONVERT(varchar(1000), task.description) AS description,
customer.customer_name,
customer.account_manager,
task.id AS task_id,
wo.type_of,
CASE WHEN wo.type_of = 'R' THEN 'Request' WHEN wo.type_of = 'P' THEN 'Project' END AS type_descr,
wo.project_class_id,
CASE WHEN (task.ovr_bill_status IS NOT NULL) THEN task.ovr_bill_status ELSE task.bill_status END AS bill_status,
wo.customer_id,
customer.support_who,
customer.programmer,
customer.proj_manager,
customer.customer_class,
customer.date_go_live,
customer.within_golive_days,
wo.resp_user_id,
task.plan_hours AS plan_hours,
task.actual_hours AS actual_hours,
task.plan_start_date AS plan_start_date,
task.plan_finish_date AS plan_finish_date,
wo.release_id,
customer.timezone,
wo.update_date,
wo.grouping_id,
wo.grouping_id2,
users.avail_status AS acct_manager_available
FROM task,
work_order AS wo
LEFT OUTER JOIN customer ON wo.customer_id = customer.code_id
AND customer.company_id = 'MCLD'
LEFT OUTER JOIN users ON users.id = customer.account_manager
AND users.company_id = 'MCLD',
assignment
-- added join here
JOIN list_config AS lc
ON wo.customer_id = lc.customer_id
WHERE task.company_id = 'MCLD'
AND wo.status <> 'V'
AND task.status <> 'C'
AND assignment.is_complete = 'N'
AND wo.customer_id NOT IN ('ZZZZ')
AND task.work_order_id = wo.id
AND wo.company_id = 'MCLD'
AND task.id = assignment.task_id
AND wo.id = assignment.work_order_id
AND assignment.assigned_user_id IN ('SLSSVC')
AND assignment.company_id = 'MCLD'
-- added conditions from smaller statement here
AND lc.config_name = 'username'
AND lc.visible = 'Y'
ORDER BY wo.create_date;