2010-01-01 1 views
0

나는이 테이블이 : 주식, 장치, 위치, 종류, StockBalance에서 StockBalanceSQL 문을 어떻게 주문할 수 있습니까?

: 단위, LocationID에서 증권, UnitId에서 StockID 위치에서이

나는

을 다음과 같이 StockBalance 표에 저장
StockBalanceID | StockID | UnitID | LocationID | BalanceQuantity 
1    | 1  | 1  | 1   | 20  
2    | 1  | 2  | 1   | 30  
3    | 1  | 3  | 1   | 40  
4    | 2  | 1  | 2   | 20  
5    | 2  | 2  | 2   | 30  
6    | 2  | 3  | 2   | 40 

내가 같은 클래식 ASP에 보여 드리고자합니다 :

그룹 기준 : 범주

Stock Name     Quantity        Location Name  
         Qty | Unit | Qty | Unit | Qty | Unit   
    Stock One |   20 | One | 30 | Two | 40 | Three  | Location One 
    Stock Two |   20 | One | 30 | Two | 40 | Three  | Location Two 

StockBalance에서 위와 같이 선택하려면 어떻게해야합니까? 내 편집은 어때?

도와주세요!

+0

감사 롭 팔리보십시오! – RedsDevils

+0

예, 저는 제 사무실 힐리데이와 함께 있습니다. 그래서 내가 아직 선택하지 않은 이유에 대한 대답을 테스트 할 수 없습니다. 생각 나게 해주셔서 감사합니다. 디스플레이 형식을 변경했지만 새 형식에 대한 답변이 없습니다. :) – RedsDevils

답변

1

PIVOT은 원하는 것입니다.

우선 몇 가지 샘플 데이터 설치 :

이제
create table yourTable (
StockBalanceID int, StockID int, UnitID int, LocationID int, BalanceQuantity int); 

insert yourTable 
select 1    , 1  , 1  , 1   , 20  
union all select 2    , 1  , 2  , 1   , 30  
union all select 3    , 1  , 3  , 1   , 40  
union all select 4    , 2  , 1  , 2   , 20  
union all select 5    , 2  , 2  , 2   , 30  
union all select 6    , 2  , 3  , 2   , 40 
; 

일을 할 수있는 ...

select StockID, LocationID, 
    sum(case UnitID when 1 then BalanceQuantity end) as [Unit One], 
    sum(case UnitID when 2 then BalanceQuantity end) as [Unit Two], 
    sum(case UnitID when 3 then BalanceQuantity end) as [Unit Three] 
from yourTable 
group by StockID, LocationID; 
+0

고마워 그것은 내 질문에 작동합니다! – RedsDevils

1

다음

DECLARE @StockBalances TABLE(
     StockBalanceID INT, 
     StockID INT, 
     UnitID INT, 
     LocationID INT, 
     BalanceQuantity FLOAT 
) 

DECLARE @Stock TABLE(
     StockID INT, 
     StockName VARCHAR(10) 
) 

DECLARE @Unit TABLE(
     UnitID INT, 
     UnitName VARCHAR(10) 
) 

DECLARE @Location TABLE(
     LocationID INT, 
     LocationName VARCHAR(10) 
) 

INSERT INTO @StockBalances SELECT 1,1,1,1,20  
INSERT INTO @StockBalances SELECT 2,1,2,1,30  
INSERT INTO @StockBalances SELECT 3,1,3,1,40  
INSERT INTO @StockBalances SELECT 4,2,1,2,20  
INSERT INTO @StockBalances SELECT 5,2,2,2 ,30  
INSERT INTO @StockBalances SELECT 6,2,3,2,40 

INSERT INTO @Stock SELECT 1, 'Stock 1' 
INSERT INTO @Stock SELECT 2, 'Stock 2' 

INSERT INTO @Unit SELECT 1, 'Unit 1' 
INSERT INTO @Unit SELECT 2, 'Unit 2' 
INSERT INTO @Unit SELECT 3, 'Unit 3' 

INSERT INTO @Location SELECT 1, 'Location 1' 
INSERT INTO @Location SELECT 2, 'Location 2' 


SELECT * 
FROM (
      SELECT s.StockName, 
        sb.BalanceQuantity, 
        u.UnitName, 
        l.LocationName 
      FROM @StockBalances sb INNER JOIN 
        @Stock s ON sb.StockID = s.StockID INNER JOIN 
        @Unit u ON sb.UnitID = u.UnitID INNER JOIN 
        @Location l ON sb.LocationID = l.LocationID 
     ) t 
PIVOT (SUM(BalanceQuantity) FOR UnitName IN ([Unit 1], [Unit 2], [Unit 3])) p 
+0

답장을 보내 주셔서 감사합니다! – RedsDevils