使用静态元素插入|动态|选择|随机|&;顶部测量良好

本文关键字:amp 顶部 测量 选择 静态 元素 插入 动态 随机 | 更新日期: 2023-09-27 17:58:02

嗨,我正在做一个奇怪的项目,这个项目把我带到了一些奇怪的地方,我又来了。本质上,搜索大约100个奇怪的控件(每个控件都可以嵌套多个或的标准)(多选列表框)。。。我不喜欢使用动态SQL,但由于应用程序的性质,我发现有必要编写一个相当短的C#后端(这是在ASP中),检查选择了哪些控件,获取控件的名称值(这是列名),并构建一个动态where子句。。。实例

SELECT TOP 50000 [lname] as 'last',[fname] as 'first',[phone],[wphone],[fax],[cellphone],[email],[state],[zip],[state_w],[zip_w],[employer],CONVERT(char, [datebirth], 101) FROM [RT2DBSQL_Review].[dbo].[Respondent] WHERE (education = '5' ) and (race = 'H' ) and (hours = '1' ) and (',' + CC5 like '%,2,%' or ',' + CC5 like '%,26,%' or ',' + CC5 like '%,12,%') and (',' + CC6 like '%,9,%' or ',' + CC6 like '%,23,%') and (',' + CC4 like '%,Nintendo DS,%') and (gender = 'M') AND Pro_resp is null

选中此项并绑定一个网格以显示匹配的人员。

下一步是。假设有1000名可行的申请者,选择x个随机申请者,并从受访者表中插入动态值(见下文)、静态职位编号、静态配额,同时输入疯狂的ass-where子句。我有这方面的所有单独部分,但我正忙于将其结合起来。

类似:

CREATE PROCEDURE TEMPTEMP @jobnum varchar(100), @quota varchar(100), @X int, @Dynamic varchar(max) AS INSERT INTO [RT2DBSQL_Review].[dbo].[tbl_job_respondents] ([job_resp_job_number] ,[job_resp_respondent] ,[job_resp_name] ,[job_resp_phone] ,[job_resp_wphone] ,[job_resp_wphone_ext] ,[job_resp_cellphone] ,[job_resp_call_status] ,[job_resp_scheduled] ,[job_resp_recruited_by] ,[job_resp_part_status] ,[job_resp_coop_amt] ,[job_resp_amt_paid] ,[job_resp_status] ,[job_resp_part_check_no] ,[job_resp_session] ,[job_resp_date_pulled] ,[job_resp_date_recruited] ,[job_resp_quota] ,[job_resp_source] ,[job_resp_confirmed] ,[job_resp_referred_by] ,[query_print_field] ,[job_resp_exported] ,[job_resp_notes] ,[job_resp_childname]) VALUES (@jobnum ,(Select TOP (@X) RecordId ,lname + ', ' + fname ,phone ,wphone ,wphone_ext ,cellPhone ,'0' --static ,0 --static ,'' --static ,'' --static ,0 --static ,0 --static ,'0' --static ,null--static ,null--static ,GETDATE() ,GETDATE() ,@quota ,'Q' --static ,null--static ,null--static ,0 --static ,0 --static ,null ,null/*static*/FROM Respondent WHERE @Dynamic ORDER BY NEWID())) GO

另一种选择是将select上的所有内容加载到数组列表中??有什么想法吗?我脑子里有个屁。

提前感谢的帮助

使用静态元素插入|动态|选择|随机|&;顶部测量良好

首先,我强烈建议您将SQL视为任何其他代码,并为其添加一致的格式。

也就是说,下面的技巧应该从你已经拥有的50000条第一条记录中随机挑选1000条。

SELECT TOP(1000) *
FROM (
    SELECT TOP 50000 [lname] as 'last'
      , [fname] as 'first'
      , [phone]
      , [wphone]
      , [fax]
      , [cellphone]
      , [email]
      , [state]
      , [zip]
      , [state_w]
      , [zip_w]
      , [employer]
      , CONVERT(char, [datebirth], 101)
      , RAND() as priority
    FROM [RT2DBSQL_Review].[dbo].[Respondent]
    WHERE (education = '5' )
      AND (race = 'H' )
      AND (hours = '1' )
      AND (',' + CC5 like '%,2,%' or ',' + CC5 like '%,26,%' or ',' + CC5 like '%,12,%')
      AND (',' + CC6 like '%,9,%' or ',' + CC6 like '%,23,%')
      AND (',' + CC4 like '%,Nintendo DS,%') and (gender = 'M')
      AND Pro_resp is null
  ) full_sample
ORDER BY priority

基于此,创建插入应该不会太糟糕。(这会很混乱,但有时这就是生活。更重要的是,这是一个重复的混乱,重复意味着你可以将其模板化。)