Я пытаюсь сделать еженедельное резюме отдельных элементов из исходной таблицы. запрос должен возвращать 1 строку для каждого указанного типа товара (то есть двери, окна и т.д.) , если ни один элемент не будет возвращен, он должен возвращать нулевые значенияSQL Transpose Pivot
Original Table
+-------+-----------+----------+-----------+-------+------+
|ITEMID | Date |ItemType |Account No |Amt | Desc |
+-------+-----------+----------+-----------+-------|------|
|10 |2014-01-01 | Doors |12345 |10 | ab |
+-------+-----------+----------+-----------+-------|------|
|10 |2014-01-02 | Doors |12345 |10 | cd |
+-------+-----------+----------+-----------+-------|------|
|10 |2014-01-03 | Doors |12345 |10 | ef |
+-------+-----------+----------+-----------+-------|------|
|10 |2014-01-04 | Doors |12345 |10 | gh |
+-------+-----------+----------+-----------+-------|------|
|10 |2014-01-05 | Doors |12345 |10 | ij |
+-------+-----------+----------+-----------+-------|------|
|10 |2014-01-06 | Doors |12345 |10 | kl |
+-------+-----------+----------+-----------+-------|------|
|10 |2014-01-07 | Doors |12345 |10 | mn |
+-------+-----------+----------+-----------+-------|------|
target table:
+----------+-----------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+
| ItemType | AccountNo | Amt1 | DESC1 | Amt2 | Desc2 | Amt3 | Desc3 | Amt4 | Desc4 | Amt5 | Desc5 | Amt6 | Desc6 | Amt7 | Desc7 |
+----------+-----------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+
| Doors | 1234 | 10 | ab | 11 | cd | 12 | ef | 13 | gh | 14 | ij | 15 | kl | 16 | mn |
+----------+-----------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+
я был в состоянии собрать ниже запрос для этого задача, основанная на ответе ниже, но есть ли лучший, более эффективный способ сделать это ????
SELECT t1.Amt AS amt1, t1.desc AS desc1, t2.amt AS amt2, t2.desc AS desc2,t3.Amt AS amt3, t3.desc AS desc3
t4.amt А.С. amt4, t4.desc AS desc4, t5.amt AS amt5, t5.desc AS desc5, t6.amt AS amt6, t6.desc AS desc6, t7.amt AS amt7, t7 .desc AS desc7, FROM mytable t1 INNER JOIN mytable t2 ON t2.date = '2014-01-01' И t2.itemid = 10 И t2.type = 'Doors' INNER JOIN mytable t3 ON t3.date = '2014-01-02' И t3.itemid = 10 И t3.type = 'Doors' INNER JOIN mytable t3 ON t3.date = '2014-01-03' И t3.itemid = 10 И t4.type = ' Дверь INNER JOIN mytable t3 ON t3.date = '2014-01-04' И t3.itemid = 10 И t5.type = 'Doors' INNER JOIN mytable t3 ON t3.date = '2014-01-05' И t3.itemid = 10 И t6.type = 'Двери' INNER JOIN MyTable t3 ПО t3.date = '2014-01-06' И t3.itemid = 10 И t7.type = 'Двери' ГДЕ t1.itemid = 10 И t1.type = '' Двери