2010-05-22 5 views
1

ASPX.NET DataGrid가 있고 위치라는 필드가 하나있는 테이블에서 SELECT LIKE 'X'%를 사용하려고합니다. 내 데이터 그리드의 다른 열에 특정 문자 (예 : wxxx, axxx, fxxx)로 시작하는 위치를 표시하려고합니다.이 쿼리에 대한 SQL Server 저장 프로 시저가 필요합니다.

아래 표시된 SP를 사용하여 데이터 격자에 둘 이상의 열을 표시하려고합니다. 문제는 locationMaster 테이블에 location이라는 필드가 하나만 있다는 것입니다. 필드 Location에는 다른 문자 (예 : w1002, w1003, 00159, 00526)로 시작하는 가변 위치 번호가 있습니다. 내가 뭘하고 싶은데 내 데이터 그리드에서 하나의 열에 wxxxx 위치를 표시하고 다른에서 0xxxx를 사용하는 SP를 사용하고 싶습니다. 난 그냥 단순히

을 실행하면
SELECT DISTINCT 
    LM.LOCATION AS 'LOCATIONS', 
    LM.COUNTLEVEL AS 'COUNTLEVEL' 
FROM 
    SOH S WITH(NOLOCK) 
JOIN LOCATIONMASTER LM ON LM.LMID = S.LMID 
WHERE 
    LM.COUNTLEVEL = 1 
    AND LM.LOCATION NOT IN ('RECOU','PROBLEM','TOSTOCK','PYXVLOC') 

내에서 Datagrid는 모든 위치 만 1 열이하고 페이지 내가 어떻게 든 SP에서 LIKE 'W %의'AND LIKE '0 %'를 사용할 수있는 경우 매우 긴 될 것이다 두 개의 열

여기
SELECT 
    DISTINCT LM.LOCATION AS '0 LOCATIONS' , 
    LM.COUNTLEVEL AS 'COUNTLEVEL' 
FROM SOH S WITH(NOLOCK) 
    JOIN LOCATIONMASTER LM ON LM.LMID = S.LMID 
WHERE 
    LM.COUNTLEVEL = 1 AND 
    LM.LOCATION NOT IN ('RECOU','PROBLEM','TOSTOCK','PYXVLOC') 
    AND LM.LOCATION LIKE '0%' 

SELECT 
    DISTINCT LM.LOCATION AS 'A LOCATIONS' , 
    LM.COUNTLEVEL AS 'COUNTLEVEL' 
FROM SOH S WITH(NOLOCK) 
    JOIN LOCATIONMASTER LM ON LM.LMID = S.LMID 
WHERE 
    LM.COUNTLEVEL = 1 AND 
    LM.LOCATION NOT IN ('RECOU','PROBLEM','TOSTOCK','PYXVLOC') 
    AND LM.LOCATION LIKE 'A%'** 

그리고 만들기 내 데이터 그리드 코드

<Columns> 
    <asp:BoundColumn DataField="COUNTLEVEL" Visible="false"/> 
    <asp:TemplateColumn HeaderText="LOCATION"> 
     <ItemTemplate> 
      <a href='confirmRecount.aspx?Var=<%# DataBinder.Eval(Container.DataItem ,"0 LOCATIONS")%>'> 
      <%# DataBinder.Eval(Container.DataItem, "0 LOCATIONS")%> 
      </a> 
     </ItemTemplate> 
    </asp:TemplateColumn> 
</Columns> 
+1

그래서 무엇이 문제입니까? –

+0

@Adam 질문은 게시물 상단에 게시됩니다. 미안, 질문을 이해하지 못한다면. 좀 더 설명력이 필요하면 알려주세요. – djshortbus

+0

... 이상한, 내 이전 의견이 삭제되었습니다. (아마 감각적인데, 그것은 아담의 삭제 된 코멘트에 대한 응답 이었기 때문에). 그럼에도 불구하고 제거해야하는 것은 약간 이상합니다. 나는 그것에게 모드를 가져 갔다? 비용을 불문하고, 나는 여전히이 게시물이 포스터 이전 질문의 중복으로 닫히지 않았는지 확인하고 싶습니다 (이는 불필요하게 닫혔습니다). –

답변

0

싶은 것은 행의 데이터는 위스콘신 일을 할 수없는 그 행에 다른 데이터에 관한 것으로, 정말 논리가 없습니다 간단한 SQL 선택. 의 당신은 2 행으로 작은 테이블을 가지고 있다고 가정 해 봅시다 :

**LOCATION**   **COUNTLEVEL** 
    W1234     10 
    A7654     23 

지금 당신은 W1234 및 A7654은 2 개 개의 다른 컬럼에 있던 있도록 변환하고자합니다. 카운트 레벨 필드는 어떻게됩니까? 그런 다음 theee 열이있는 1 행을 갖게 될 것이고, 이제는 각각의 행과 관련이없는 2 개의 계수 레벨을 가지게 될 것입니다. 이제는 서로 다른 열과 관련이있을 것이고, 계수 레벨 열에 어떤 것이 포함될 것입니까? 따라서 다음과 같이 시도해보아야합니다.

**LOCATION A** **COUNTLEVELA** **LOCATION W** **COUNTLEVELW** 
    NULL    NULL    W1234    10 
    A7654    23     NULL   NULL 

하지만 어떤 방식 으로든 유용하다고는 생각하지 않습니다.

수직 행을 수평 열로 투영 할 수있는 유일한 방법은 PIVOT입니다. 그러나 한 필드의 값은 열 머리글이되고 다른 열의 값은 행이되므로 아래와 같이됩니다.

    **W1234**   **A7654** 
LOCATION COUNT  10     23 

그러나 귀하의 경우에 이것은 당신이 deptartment 수직으로 등으로 그룹에 세 번째 변수를 필요로 유용이 될 진짜로, 그리드보기가 하나의 행 많은 열을 만들 것입니다.

데이터 그리드가 페이지에서 차지하는 양만큼의 공간을 원한다면 2 개의 데이터 그리드를 사용하고 SP에서 2 개의 데이터 세트를 반환 할 수 있지만 2 데이터 그리드는 어떤 식 으로든 서로 관련이 없습니다.

관련 문제