Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Updating column with value from other table, can't use distinct function

table

My original data is in Table2. I created Table1 from scratch. I populated Column A like this:

INSERT INTO Table1("item")
SELECT DISTINCT(Table2."item")
FROM Table2

I populated Table1.Totals (Column B) like this:

UPDATE Table1
SET totals = t2.q
    FROM Table1 INNER JOIN
    (
        SELECT t2."item"
        , SUM(t2.quantity) AS q
        FROM t2
        GROUP BY t2."item"
    ) AS t2
    ON Table1."item" = t2."item"

How can I populate Table1."date"? My UPDATE above doesn't work here because I can't use an aggregate function on a date. I was able to get the results I wanted using the following code in a separate query:

SELECT DISTINCT Table1."item"
, Table2."date"
FROM Table1 INNER JOIN Table2
ON Table1."item" = Table2."item"
ORDER BY Table1."item"

But how do I use the results of this query to SET the value of the column? I'm using SQL Server 2008.

like image 202
eek Avatar asked Dec 19 '25 23:12

eek


1 Answers

If you can't do the insert all over again, as @Lamak suggested, then you could perform an UPDATE this way:

UPDATE t1
  SET t1.Date = s.Date
  FROM Table1 AS t1
  INNER JOIN 
  (
    SELECT Item, [Date] = MAX([Date]) -- or MIN()
      FROM Table2
      GROUP BY Item
  ) AS s
  ON t1.Item = s.Item;
like image 92
Aaron Bertrand Avatar answered Dec 21 '25 19:12

Aaron Bertrand



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!