2017-07-16 3 views
0

これを検索しようとしましたが、正しく表現する方法がわかりませんでしたので、ここの誰かが助けてくれることを願っています。SQL Server:データコードと製品コードのリスト

私は2つのテーブルproductとdaterangeを持っています。

CREATE TABLE product 
(
    Code varchar(50) NOT NULL, 
    Price money 
); 

CREATE TABLE daterange 
(
    yyyymm varchar(6) NOT NULL 
); 

INSERT INTO product (Code, Price) 
VALUES ('10001J',3.68), ('10002K',7.23), ('10003L',4.72); 

INSERT INTO daterange (yyyymm) 
VALUES (201507),(201508),(201509),(201510); 

私が生産するリストはこれです:

YYYYMM Product 
--------------- 
201507 10001J 
201507 10002K 
201507 10003L 
201508 10001J 
201508 10002K 
201508 10003L 
201509 10001J 
201509 10002K 
201509 10003L 
201510 10001J 
201510 10002K 
201510 10003L 

基本的には、すべての製品およびすべての日付の組み合わせを作成します。私はdaterangeテーブルが必要なのかどうか、コード単体でできるのかどうかはわかりません。もちろん、Excelなどで組み合わせを作成することもできますが、それをより大きな動的クエリに組み込むことを望んでいます。事前に

感謝:)私は本当に前に使用していなかった参加を指摘してフェリックスへ

+0

「クロスジョイン」はどうですか? –

+0

そして今私は馬鹿のように感じる。フェリックスに感謝します。前にそのようなものに出くわしたことはありません:) –

+0

'私はdaterangeテーブルが必要かどうかわかりません.'これに関して、日付テーブルは、とにかく手に持っている悪いことではありません(実際の日付varcharsではなく、後で必要に応じて変換するのは簡単です)。その後、毎回作成することなく、そのテーブルから必要な日付範囲を選択できます。数値表と同じです。 – ZLK

答えて

0

感謝。

SELECT yyyymm, code FROM product CROSS JOIN daterange 

が魅力的でした。

+0

実際には、以前にこれを使用しています。あなたは 'ON'節なしで' INNER JOIN'を使うこともできます(試してみてください)。 –

+0

@TimBiegeleisen内部結合には常にon節が必要です。それはon節がON 1 = 1であるか何かである可能性があります。 – ZLK

+0

@ZLK MySQLでは、on節のない内部結合が許可されています。これはクロスジョインと同じです。明らかにTSQLにはありません。 –

関連する問題