Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在临时表中插入值与源不同的数据_Sql_Sql Server_Database - Fatal编程技术网

Sql 在临时表中插入值与源不同的数据

Sql 在临时表中插入值与源不同的数据,sql,sql-server,database,Sql,Sql Server,Database,我需要将数据拉入临时表中,以便将其分组到产品类型中,但我们目前有特定产品的不同变体,我需要将所有变体作为原始变体插入。我按如下方式编写了代码,但它仍然不起作用 IF EXISTS (SELECT * FROM sys.tables WHERE name LIKE '#temp%') DROP TABLE #temp CREATE TABLE #temp ( Product VARCHAR(max) NULL,

我需要将数据拉入临时表中,以便将其分组到产品类型中,但我们目前有特定产品的不同变体,我需要将所有变体作为原始变体插入。我按如下方式编写了代码,但它仍然不起作用

IF EXISTS (SELECT *
           FROM   sys.tables
           WHERE  name LIKE '#temp%')
  DROP TABLE #temp

CREATE TABLE #temp
  (
     Product      VARCHAR(max) NULL,
     failure_code VARCHAR(max) NULL
  )

IF Product IN ( 18, 19, 20, 23,
                24, 25 )
  SELECT Product = 'DSD 4136'

INSERT INTO #temp
            (Product,
             failure_code)
SELECT product.prod_desc AS Product,
       test_failure_code.failure_code
FROM   repair
       INNER JOIN test_failure_code
               ON repair.id_test_failure_code = test_failure_code.id_test_failure_code
       INNER JOIN production_event_details
               ON repair.id_production_event_details = production_event_details.id_production_event_details
       INNER JOIN product
               ON production_event_details.prod_id = product.prod_id
       INNER JOIN repair_scm_bom_item
               ON repair.id_repair = repair_scm_bom_item.id_repair
       INNER JOIN repair_fault
               ON repair_scm_bom_item.id_repair_fault = repair_fault.id_repair_fault
       INNER JOIN scm_bom_item
               ON repair_scm_bom_item.id_scm_bom_item = scm_bom_item.id_scm_bom_item
GROUP  BY product.prod_desc,
          test_failure_code.failure_code

SELECT *
FROM   #temp

DROP TABLE #temp 
声明

IF Product IN ( 18, 19, 20, 23, 24, 25 )
SELECT Product = 'DSD 4136'
实际上不会执行任何操作,您需要在insert语句中使用CASE语句,当产品是您列出的选项之一时,这将选择产品DSD 4136:

INSERT INTO #temp
            (Product,
             failure_code)
SELECT CASE WHEN product.prod_desc IN ( 18, 19, 20, 23, 24, 25 ) THEN 'DSD 4136'
  ELSE product.prod_desc
END
AS Product,
       test_failure_code.failure_code
FROM   repair
       INNER JOIN test_failure_code
               ON repair.id_test_failure_code = test_failure_code.id_test_failure_code
       INNER JOIN production_event_details
               ON repair.id_production_event_details = production_event_details.id_production_event_details
       INNER JOIN product
               ON production_event_details.prod_id = product.prod_id
       INNER JOIN repair_scm_bom_item
               ON repair.id_repair = repair_scm_bom_item.id_repair
       INNER JOIN repair_fault
               ON repair_scm_bom_item.id_repair_fault = repair_fault.id_repair_fault
       INNER JOIN scm_bom_item
               ON repair_scm_bom_item.id_scm_bom_item = scm_bom_item.id_scm_bom_item
GROUP  BY product.prod_desc,
          test_failure_code.failure_code

你应该准确地描述什么不起作用,否则人们就帮不了你。陈述中的if产品失败了。它不会将描述更改为我想要的新描述。我也尝试使用产品id,但仍然失败。我需要我们的DSD 4136产品的所有变体作为DSD 4136加载到临时表上,以便质量部门使用。谢谢Jamie,非常感谢,它工作起来很有魅力