2010-12-31 3 views
0

7 столов. В каждой таблице есть общий объект, называемый рыбаком. У меня есть четыре поля в каждой таблице, которая созданаBy, createdDate, LastModifiedBy и LastModifiedDate. Эти поля отслеживают последнюю дату операции и имя пользователя в этой таблице. Теперь проблема в том, что мне нужно показать историю рыбака, это то, что пользователь сделал для конкретного рыбака. У меня есть 3 столбца в моей сетке, это ActivityDate, UserName и Description. Мне нужно показать что-то вроде этогоОбертывание нескольких столбцов в одной COlumn

ActivityDate  User   Description 

------------ ----------- --------------------------- 

11/12/2010 Test User   Updated Address 
12/12/2010 Alexander   Created Note 

Позвольте мне объяснить вам выше. Если в таблице указывается адрес, если пользователь Test User обновляет любое поле, тогда запрос должен иметь возможность сказать, что ваше поле адреса обновлено или может вытащить действие на основе даты последней модификации даты и lastmodifiedbyuser (если они не являются нулевыми или пустыми). Аналогично для всех таблиц. Если CreatedBy и CreatedDate равны null, история не будет отображаться. Если заполнены только createdDate и createby, будет отображаться созданное имя таблицы или соответствующее сообщение.

Надеюсь, сценарий ясен.

ответ

1

Если я правильно понял ваш вопрос, я думаю, вам нужно что-то вроде этого?

SELECT 
    isnull(LastModifiedDate,createdDate) as ActivityDate, 
    isnull(LastModifiedBy,createdBy) as User .... 
+0

Так вы хотите сказать, если у меня есть несколько столбцов, то я должен нужно что-то вроде этого IsNull (Table1.LastModifiedDate, Table2.LastModifiedDate, Table3.CreatedDate) как ActivityDate или я могу управлять им только на одном столе. Пожалуйста, сделайте меня более ясным. –

+2

Вы можете работать с большим количеством таблиц, если таблицы правильно соединены, например. 'SELECT ISNULL (Table1.LastModifiedDate, Table2.LastModifiedDate, Table3.CreatedDate) как ActivityDate FROM Table1, Table2, Table3 WHERE Table1.fisherid = Table2.fisherid AND Table1.fisherid = Table3.fisherid' – Malvolio

+0

, если я выполняю этот запрос в Sql Server 2008 я получаю следующее сообщение об ошибке [Msg 174, Level 15, State 1, Line 1 Функция isnull требует 2 аргумента (ов)]. –