2015-04-28 3 views
0

Есть ли способ вставить в таблицу два значения, используя два предложения «FROM»? Я пытаюсь вставить значение процентиля - экспозицию и осведомленность:Вставить в таблицу два значения, используя два предложения «FROM»

INSERT INTO tbReport (Exposure, Awareness) 
SELECT MAX([q_Exposure]) 
    FROM (SELECT TOP 30 PERCENT [q_Exposure] 
    FROM tbQuestions 
    WHERE q_Exposure IS NOT NULL ORDER BY [q_Exposure]), 
MAX([q_Awareness]) 
    FROM (SELECT TOP 30 PERCENT [q_Awareness] 
    FROM tbQuestions 
    WHERE q_Awareness IS NOT NULL ORDER BY [q_Awareness]); 

ответ

1

Я довольно уверен, что вы не можете использовать два ЗЕЬЕСТ, как это, вы могли бы также сделать что-то подобное,

INSERT INTO tbReport (Exposure, Awareness) 
SELECT 
    Max(tmpQ.Exposure) As MaxExpo, 
    Max(tmpQ.Awareness) As MaxAware 
FROM 
    (SELECT MAX([q_Exposure]) As Exposure, 0 As Awareness FROM (SELECT TOP 30 PERCENT [q_Exposure] FROM tbQuestions WHERE q_Exposure IS NOT NULL ORDER BY [q_Exposure]) 
    UNION ALL 
    SELECT 0 As Exposure, MAX([q_Awareness]) As Awareness FROM (SELECT TOP 30 PERCENT [q_Awareness] FROM tbQuestions WHERE q_Awareness IS NOT NULL ORDER BY [q_Awareness])) As tmpQ; 
+0

Он отлично работает, спасибо! – MorZa

+0

Рад помочь :) – PaulFrancis

0

Я не думаю, что синтаксис вы упомянули будет работать, потому что типичный синтаксис вставки будет:

INSERT INTO table_name (col_names) VALUES (col_values); 

Дайте более четкую картину того, что вы хотите от вышеуказанного запроса?

+0

Нет, мы можем вставить с различными методами, ничего плохого синтаксис. –

0

Я хотел бы предложить вам попробовать следующий код

INSERT INTO tbReport (Exposure, Awareness) 
SELECT MAX(SELECT TOP 30 PERCENT [q_Exposure] 
FROM tbQuestions 
WHERE q_Exposure IS NOT NULL 
ORDER BY [q_Exposure]), 
MAX(SELECT TOP 30 PERCENT [q_Awareness] 
FROM tbQuestions 
WHERE q_Awareness IS NOT NULL 
ORDER BY [q_Awareness]); 
0

Пожалуйста, попробуйте выполните приведенный ниже запрос, надеюсь, что он работает :)

INSERT INTO tbReport (Exposure, Awareness) 
VALUES 
(
    (SELECT MAX (Q_E.q_Exposure) 
    FROM (SELECT TOP 30 PERCENT q_Exposure FROM tbQuestions WHERE q_Exposure IS NOT NULL ORDER BY q_Exposure) Q_E) 
, 
    (SELECT MAX(Q_A.q_Awareness) 
    FROM (SELECT TOP 30 PERCENT q_Awareness FROM tbQuestions WHERE q_Awareness IS NOT NULL ORDER BY q_Awareness) Q_A) 
) 

Я попытался имитировать то же самое, и он работал идеально Я в порядке.

FYR, Я создал таблицу [t_empSalary]

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

SET ANSI_PADDING ON 
GO 

CREATE TABLE t_empSalary 
    (
    empSalary INT, 
    empid INT 
    ) 

GO 

SET ANSI_PADDING OFF 
GO 

Пожалуйста, найдите скриншот ниже

enter image description here

INSERT INTO [t_empSalary](empSalary, empid) VALUES 
    (
    (SELECT MAX(t_empSalary.empSalary) FROM (SELECT TOP 30 PERCENT empSalary FROM [dbo].[t_empSalary]) t_empSalary) 
    , 
    (SELECT MAX(t_emp.empid) FROM (SELECT TOP 30 PERCENT empid FROM [dbo].[t_empSalary]) t_emp) 
) 
Смежные вопросы