Я искал для себя, как это сделать в течение нескольких дней - к сожалению, у меня нет большого опыта работы с SQL-запросами, так что это было немного проб и ошибок.Присоединяйтесь к двум таблицам - Один общий столбец с разными значениями
В принципе, я создал две таблицы - как с одним столбцом DateTime, так и с другим столбцом со значениями. Столбец DateTime имеет разные значения в каждой таблице.
Итак ...
ACOQ1 (Table 1)
===============
| DateTime | ACOQ1_Pump_Running |
|----------+--------------------|
| 7:14:12 | 1 |
| 8:09:03 | 1 |
ACOQ2 (Table 2)
===============
| DateTime | ACOQ2_Pump_Running |
|----------+--------------------|
| 3:54:20 | 1 |
| 7:32:57 | 1 |
Я хочу объединить эти две таблицы, чтобы выглядеть следующим образом:
| DateTime | ACOQ1_Pump_Running | ACOQ2_Pump_Running |
|----------+--------------------+--------------------|
| 3:54:20 | 0 OR NULL | 1 |
| 7:14:12 | 1 | 0 OR NULL |
| 7:32:57 | 0 OR NULL | 1 |
| 8:09:03 | 1 | 0 OR NULL |
я достиг этого, создав третью таблицу, что «Союза столбец DateTime из обеих таблиц, а затем использует эту DateTime столбец третьей таблицы для новой таблицы, но было интересно, если есть способ, чтобы пропустить это выйти. (В конце концов я буду добавлять все больше столбцов из разных таблиц и на самом деле не хочу добавлять еще большее время обработки, создавая совместную таблицу DateTime, которая может не понадобиться).
Мой рабочий код на данный момент:
CREATE TABLE JointDateTime
(
DateTime CHAR(50)
CONSTRAINT [pk_Key3] PRIMARY KEY (DateTime)
);
INSERT INTO JointDateTime (DateTime)
SELECT ACOQ1.DateTime FROM ACOQ1
UNION
SELECT ACOQ2.DateTime FROM ACOQ2
SELECT JointDateTime.DateTime, ACOQ1.ACOQ1_NO_1_PUMP_RUNNING, ACOQ2.ACOQ2_NO_1_PUMP_RUNNING
FROM (SELECT ACOQ1.DateTime FROM ACOQ1
UNION
SELECT ACOQ2.DateTime FROM ACOQ2) JointDateTime
LEFT OUTER JOIN ACOQ1
ON JointDateTime.DateTime = ACOQ1.DateTime
LEFT OUTER JOIN ACOQ2
ON JointDateTime.DateTime = ACOQ2.DateTime
Не используйте 'CHAR' для хранения дат – ughai
Что я должен использовать вместо этого? Он хранит его в настоящее время как 11 мая 2015 года 07:14:12, поэтому, вероятно, он захочет в этом формате еще. – chrisj91
Используйте 'datetime' и используйте' convert' или 'format'. какую версию сервера sql вы используете? – ughai