Это может помочь U ...
DECLARE @tbl1 TABLE
(
id INT , location VARCHAR(1)
)DECLARE @tbl2 TABLE
(
id INT , tabl1id INT , table1Toid INT
)
INSERT INTO @tbl1
SELECT 1 , 'A' UNION ALL
SELECT 2 , 'B' UNION ALL
SELECT 3 , 'C'
INSERT INTO @tbl2
SELECT 1 , 1, 2 UNION ALL
SELECT 2 , 1 , 3 UNION ALL
SELECT 3 , 2 , 1 UNION ALL
SELECT 4 , 3 , 1 UNION ALL
SELECT 5 , 1 , 3 UNION ALL
SELECT 6 , 1 , 3
SELECT * FROM
(
SELECT COUNT(tabl1id) CNT , (SELECT location FROM @tbl1 WHERE ID=T2.tabl1id)+' To '+(SELECT location FROM @tbl1 WHERE ID=T2.table1Toid) AS location
FROM @tbl2 T2
GROUP BY tabl1id,table1Toid
)D
PIVOT (MIN(CNT) FOR location IN ([B To A],[C To A],[A To B],[A To C])) AS PVT
, и если у вас есть 4 строки в tbl1, то в желаемом результате будет 10 столбцов. Я думаю, вам нужно изменить дизайн ... –
спасибо за ответ @HomayounAfshari в основном я хочу рассчитать общее количество поездок в определенном месте. Для примера между местоположением от A до C общее число поездок составляет 3 и от A до b общее количество поездок равно 1. – enigma
как насчет того, чтобы поместить вместо столбцов «A в B», «от A до C» и т. Д. В этом случае вам не нужно использовать динамические запросы PIVOT. – cha