Добавление значений столбцов таблицы однозначно - PullRequest
0 голосов
/ 27 апреля 2020

Ниже у меня есть 2 таблицы с 3 столбцами, каждая из которых имеет значения для прошлого и настоящего на основе QuestionId и форм, к которым они прикреплены.

  1. presentValueTable - он имеет questionId и значения настоящего.

  2. pastValueTable - имеет questionId и значения из прошлого для того же QuestionId.

Код:

-- this code is re-runable 
IF OBJECT_ID('tempdb..#presentValueTable') IS NOT NULL 
BEGIN 
    DROP TABLE #presentValueTable
END

IF OBJECT_ID('tempdb..#pastValueTable') IS NOT NULL 
BEGIN 
    DROP TABLE #pastValueTable
END

CREATE TABLE #presentValueTable 
(
    Id Int IDENTITY(1, 1),
    QuestionId INT,
    AssignForm INT,
    Value INT
)

CREATE TABLE #pastValueTable
(
    Id Int IDENTITY(1,1),
    QuestionId INT,
    AssignForm INT, 
    Value INT 
)

-- please run this once to insert the date 
/*
INSERT INTO #presentValueTable (QuestionId, AssignForm, Value)
VALUES (12, 35, 100), (12, 35, 200), (12, 35, 300), (12, 35, 400), (12, 35, 500)   --5 rows inserted

INSERT INTO #pastValueTable (QuestionId, AssignForm, Value)
VALUES (12, 45, 99), (12, 45, 199), (12, 45, 299), (12, 45, 399), (12, 45, 499)   --5 rows inserted
*/

SELECT * FROM #presentValueTable
SELECT * FROM #pastValueTable

![Image of the Select query for both the tables] 1

Это то, что я ожидаю в качестве вывода - 3 столбца с 10 рядами. Каждая таблица имеет 5 строк, поэтому при выборе я хочу 10 строк.

 QuestionId | AssignForm |  Value | 
 -----------+------------+--------+
 12              35        100 
 12              35        200 
 12              35        300 
 12              35        400 
 12              35        500 
 12              45        99 
 12              45        199 
 12              45        299 
 12              45        399 
 12              45        499 

Спасибо, что посмотрели.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020
select pr.QuestionId,pr.AssingForm,pr.Value
from  #presentValueTable  as pr
union 
select pa.QuestionId,pa.AssingForm,pa.Value
from  #pastValueTable  as pa
order by QuestionId,AssingForm
0 голосов
/ 27 апреля 2020

Это то, что я сделал, я буду рад снять отметку с моего ответа, если найду лучший ответ. Я передаю questionId каждый раз, запрашиваю таблицу 2 и добавляю ее в новую временную таблицу. Я чувствую, что мне нужно пройти через это, чтобы быть более динамичным c.

 CREATE Procedure GetAllPastPresentValueByQuestionId @QuestionId INT
    AS
    BEGIN
    SET NOCOUNT ON; 
    CREATE Table #tableAll 
    (
    Id INT PRIMARY KEY Identity(1,1),
    QuestionId INT, 
    AssignForm INT ,
    Value INT, 
    )
    INSERT INTO  #tableAll (QuestionId, AssignForm,Value)
    SELECT p.QuestionId,p.AssingForm,p.Value   FROM #pastValueTable as p WHERE QuestionId = @QuestionId
    INSERT INTO #tableAll (QuestionId, AssignForm,Value)
    SELECT p.QuestionId,p.AssingForm,p.Value   FROM #presentValueTable as p WHERE QuestionId = @QuestionId


    SELECT * FROM #tableAll
    END 
    GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...