1

これを並べ替えることができません。結果セット全体をDateId、productNameの順に並べたいのですが、機能させることができません。

SELECT  d.DateId,
    s.product_name1 as productName
FROM    dbo.SaleDates d
INNER JOIN dbo.Sale s ON s.saleId = d.saleId

UNION ALL

SELECT  d.DateId,
    s.product_name2 as productName
FROM    dbo.SaleDates d
INNER JOIN dbo.Sale s ON s.saleId = d.saleId

UNION ALL

SELECT  d.DateId,
    s.product_name3 as productName
FROM    dbo.SaleDates d
INNER JOIN dbo.Sale s ON s.saleId = d.saleId
order by d.DateId, productName

基本的にどこでどのようにこの注文を追加するかわからない。注文のサブセットがあるので、各選択に注文を追加したくありません。-全体の-終了結果セットを注文したい...

4

4 に答える 4

2

これを試すことができます:

SELECT * FROM 
(
    SELECT  d.DateId as DateId,
        s.product_name1 as productName
    FROM    dbo.SaleDates d
    INNER JOIN dbo.Sale s ON s.saleId = d.saleId

    UNION ALL

    SELECT  d.DateId as DateId,
        s.product_name2 as productName
    FROM    dbo.SaleDates d
    INNER JOIN dbo.Sale s ON s.saleId = d.saleId

    UNION ALL

    SELECT  d.DateId as DateId,
        s.product_name3 as productName
    FROM    dbo.SaleDates d
    INNER JOIN dbo.Sale s ON s.saleId = d.saleId
) AS A
order by DateId, ProductName
于 2012-08-30T06:36:01.413 に答える
1
    Select Col1, Col2 from tblA where <some condition>
    Union All
    Select Col1,Col2 from tblB where <some condition>
    Union All
    Select Col1,Col2 from tblC where <some condition>

    Order By 1,2 -- means by first column,second column

-- or Order By Col1, Col2

しかし、あなたのものはうまくいくはずですOrder by DateId,productName

また、テーブル Sales と SalesDate を 3 回ヒットする代わりに、一時テーブルで共通の結果セットをキャッチし、目的の列でユニオンを実行することで、クエリのパフォーマンスを向上させることができます。

SELECT d.DateId,s.product_name1,s.product_name2,s.product_name3
INTO #temp
FROM    dbo.SaleDates d
INNER JOIN dbo.Sale s ON s.saleId = d.saleId

Select t.DateId,t.product_name1 As productName From #temp t Union All
Select t.DateId,t.product_name2 From #temp t Union All
Select t.DateId,t.product_name3 From #temp t 
Order By DateId,productName

Drop Table #temp

お役に立てれば

于 2012-08-30T07:43:52.150 に答える
1

列のエイリアスを参照してください(あなたの場合はDateId、Productname)

select 1 a
union all
select 2 a
order by a desc

または列番号を参照してください

select 1 a
union all
select 2 a
order by 1
于 2012-08-30T07:25:27.180 に答える
0

これには CTE を使用できます。または、次のようにします。

Select res.DateID, res.productName from 
(
SELECT  d.DateId,
    s.product_name1 as productName
FROM    dbo.SaleDates d
INNER JOIN dbo.Sale s ON s.saleId = d.saleId

UNION ALL

SELECT  d.DateId,
    s.product_name2 as productName
FROM    dbo.SaleDates d
INNER JOIN dbo.Sale s ON s.saleId = d.saleId

UNION ALL

SELECT  d.DateId,
    s.product_name3 as productName
FROM    dbo.SaleDates d
INNER JOIN dbo.Sale s ON s.saleId = d.saleId
)
order by res.DateId, res.productName
于 2012-08-30T06:35:26.287 に答える